У меня есть несколько веб-сервисов на C #, которые возвращают JSON. .NET JavaScriptSerializer возвращает даты в эпоху времени (миллисекунды с 1970 года). На любом компьютере под управлением Windows веб-приложение без проблем обрабатывает миллисекунды до нужной даты.
На моем Mac даты иногда отключаются на 1 час. Не каждый раз Только иногда. Это сейчас происходит и на iPhone, который я сейчас создаю.
Сначала я подумал, что потерял некоторую точность при делении миллисекунд на 1000, чтобы создать действительный объект NSDate Objective-C. Затем я протестировал создание даты в javascript на Mac Firefox с той же отметкой времени и получил такое же смещение на 1 час.
Есть идеи? Спасибо ...
Редактировать: Я также заметил в консоли в XCode, что дата создания имеет -4 или -5 рядом с ней. Я предполагаю, что это смещение по Гринвичу. Те, кажется, изменяются независимо от того, смещена ли дата на 1 час. Таким образом, некоторые -4 даты и некоторые -5 являются правильными, а некоторые из них смещены.
Редактировать: Примеры использования:
console.log(new Date(-1173643200000));
возвращается Вс 23 октября 1932 00:00:00 GMT-0400 (EST)
console.log(new Date(-1031515200000));
Возвращает Сб 24 апреля 1937 23:00:00 GMT-0500 (EST)
NSDate* date = [NSDate dateWithTimeIntervalSince1970:ticks / 1000];
-589320000000 =
1951-04-30 00:00:00 -0400
-1173643200000 =
1932-10-22 23:00:00 -0500
(Это верное в консоли Firebug, неверное в консоли XCode)
-1303416000000 =
1928-09-12 00:00:00 -0400
-1492545600000 =
1922-09-15 00:00:00 -0400
-1263668400000 =
1929-12-16 00:00:00 -0500
-1252094400000 =
1930-04-29 00:00:00 -0400
-1046458800000 =
1936-11-03 00:00:00 -0500
-1298746800000 =
1928-11-05 00:00:00 -0500
-1031515200000 =
1937-04-24 23:00:00 -0500
(возвращает неверно как в консоли Firebug, так и в консоли XCode)
-910465200000 =
1941-02-24 00:00:00 -0500
-1152648000000 =
1933-06-23 00:00:00 -0400
-1109793600000 =
1934-10-31 23:00:00 -0500
Возможно ли, что Microsoft / Mozilla / Apple имеют противоречивые правила, определяющие, когда тогда началось летнее время?
Редактировать: Mac Firefox и Windows Firefox получают разные результаты для -1031515200000. Обе машины настроены на один и тот же часовой пояс.