Дата JSON не была правильно передана контроллеру - PullRequest
0 голосов
/ 29 ноября 2018

У меня проблема с правильной передачей даты JSON из представления в контроллер, и мне нужна ваша помощь в этом.

В представлении у меня есть дата, которая является 29/11/2018.Когда я использую date.toJSON(), полученное значение равно "2018-11-28T16:00:00.000Z".Однако в контроллере он читается как 28/11/2018 16:00 (параметр, который получает его, имеет тип данных DateTime.

Я не знаю, что здесь делать, и сейчас он действительно размалывает мои механизмы.

Вот как я делаю сообщение ajax:

var data = GetAllData();

$.ajax({
   url: myFile.api.SaveData,
   type: "POST",
   data: JSON.stringify(data),
   dataType: 'json',
   contentType: "application/json; charset=utf-8",
   success: function() {
      // Do something here
   }
});

Контроллер:

[HttpPost]
public object SaveData([FromBody] data)
{
   // DO SOMETHING HERE
}

Примечание: если это дубликат, пожалуйста, перенаправьте меня по ссылке, пожалуйста.

Спасибо

1 Ответ

0 голосов
/ 29 ноября 2018

Я прочитал из вашего вопроса, что дата анализируется .NET, но вы считаете, что это неправильная дата (28.11.2018, а не 29.11.2018).

Ваш тип .NET DateTimeпо умолчанию не знает часовых поясов и ничего не меняет.DateTime.Parse примет строку ISO 8601, которую ей предоставляет Date.toJSON.

Конструктор js Date (), который вы, вероятно, используете, создает Date с часовым поясом, установленным для текущей системы.

var d = new Date(2018, 11, 28)
d.toString()
"Fri Dec 28 2018 00:00:00 GMT+0100 (Central European Standard Time)"
d.toJSON()
"2018-12-27T23:00:00.000Z"

То, что вы хотите, снова угадать, что-то вроде:

d = new Date(Date.UTC(2018, 11, 28))
d.toJSON()
"2018-12-28T00:00:00.000Z"

От MDN :

Примечание: гдеДата вызывается как конструктор с более чем одним аргументом, указанные аргументы представляют местное время.Если требуется UTC, используйте новую дату (Date.UTC (...)) с теми же аргументами.

также: javascript Date.UTC

Метод Date.UTC () принимает те же параметры, что и конструктор Date, но обрабатывает их как UTC

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...