JavaScriptDateTimeConverter дает другой результат на сервере - PullRequest
2 голосов
/ 09 марта 2011

Код ниже отлично работает на локальной машине. С другой стороны, на сервере она сдвигает дату на 1 день больше.

JsonSerializer serializer = new JsonSerializer();
serializer.Converters.Add(new JavaScriptDateTimeConverter());

Значение, возвращаемое из базы данных: 2010-09-16 00: 00: 00.000

JsonSerializer выдает 2010-09-16 на локальном компьютере и дает 2010-09-15 на сервере.

есть идеи?


Чтобы прояснить проблему, я сделал простой тест;

string str = JsonConvert.SerializeObject(Convert.ToDateTime("2010-09-16 00:00:00.000"), new JavaScriptDateTimeConverter());
Response.Write(str);

этот код дает разные результаты на разных машинах. Почему?

новая дата (1284584400000) и новая дата (1284588000000) или

Ср 15 сентября 2010 г. 23:00:00 и Чт 16 сентября 2010 г. 00:00: 00

Ответы [ 2 ]

0 голосов
/ 06 июля 2017

Это проблема часового пояса.По умолчанию JavaScriptDateTimeConverter использует даты UTC.Вам необходимо создать объект SerializerSettings и установить

settings.DateTimeZoneHandling = Newtonsoft.Json.DateTimeZoneHandling.Local;
0 голосов
/ 09 марта 2011

Это может быть проблема с часовым поясом. Ваш сервер находится в другом часовом поясе? Корректирует ли часовой пояс даты и время?

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