Нежелательная пуля / точка в строке DateTime из JS с использованием Internet Explorer - PullRequest
0 голосов
/ 01 октября 2019

Мне нужно передать DateTime из скрипта (через ajax) в Controller, однако строка даты выдает исключение после преобразования в DateTime. Изучив передаваемые данные, я заметил, что строка даты имеет точки / маркеры между ними при передаче через IE. Точки / маркеры отсутствуют при передаче через Chrome.

Я пробовал как new Date().toLocaleString(), так и GETDATE() из базы данных. Оба имеют одинаковый результат.

enter image description here

Любые идеи, как предотвратить точки / пули и / или удалить его?

Версия IE - 11.

JS: $("#hdnTransDate").val(new Date().toLocaleString());

Контроллер:

var date = String.Empty;

using (SqlConnection conn = new SqlConnection(connStr))
{
    if (conn.State == ConnectionState.Closed)
    {
        conn.Open();
    }

    using (SqlCommand cmd = new SqlCommand("SELECT GETDATE() as [CurrDate]"))
    {
        cmd.Connection = conn;

        using (SqlDataReader reader = cmd.ExecuteReader())
        {
            if (reader.Read())
            {
               date = reader["CurrDate"] + "";
            }
        }
    }
}

ViewBag.TranDate = date;

return PartialView();

Редактировать: добавлена ​​версия IE и код, используемый в JS и Controller

1 Ответ

1 голос
/ 01 октября 2019

Кажется, что это ошибка в IE после прочтения https://www.csgpro.com/blog/2016/08/a-bad-date-with-internet-explorer-11-trouble-with-new-unicode-characters-in-javascript-date-strings/

Вы можете сделать что-то вроде

function ieIsStupidWithDates(d) {
    var fix = function(s) {
        return ('0' + s).substr(-2);
    }
    return (d.getMonth() + 1) + '/' + d.getDate() + '/' + d.getFullYear() + ' ' + d.getHours() + ':' + fix(d.getMinutes()) + ':' + fix(d.getSeconds());
}
console.log(ieIsStupidWithDates(new Date));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...