2015-11-27 4 views
3

У меня проблема с метками времени между java и javascript.Временные метки Java и JavaScript не совпадают

Я уже нашел эти 2 вопроса о временных отметках, и я знаю о временных изменениях на протяжении многих лет.

Timestamp deviation Java vs Javascript for old dates (3600secs)

Why is subtracting these two times (in 1927) giving a strange result?

В основном в полночь в конце 1927, часы вернулись 5 минут и 52 секунд. Итак, «1927-12-31 23:54:08» на самом деле произошло дважды, и похоже, что Java разбирает его как возможный мгновенный для этой локальной даты/времени.

В чем проблема: когда у меня есть javascript и помещаю там временную метку, я получаю другую дату, чем дата Java. Мне нужно это, чтобы показать правильную дату на веб-странице. Я знаю, что могу запросить дату в виде строки, но я предпочитаю использовать временную метку.

Java дата 0001-01-01 временная метка -62135773200000

JavaScript дата 0001-01-01 временная метка -62135596800000

Разница заключается в том -176400000; 49 часов.

Кто-нибудь знает, что я могу для этого сделать.

ответ

4

Лично я бы избегал пропускания числовых временных меток вокруг системы на одном языке для системы на другом языке для единственной причиной того, что языки могут отличаться в алгоритме, который они используют для их создания.

Существует международный стандарт (ISO-8601) для обработки временных меток от системы к системе. В этом ваше представление даты будет 0001-01-01T00:00:00+00:00. Я бы рекомендовал использовать этот подход, поскольку это широко распространенное решение этой проблемы.

+0

Да, ISO 8601 - правильный подход. Использование, такое как этот вопрос, является самой целью этого стандарта. Стандартные форматы намного легче читать, регистрировать, устранять неполадки и отлаживать, чем «длинные» числовые значения. –

0

Это может быть связано с настройками TZ и DST, которые отклоняются от браузера до java. Для того, чтобы прибить его, я рекомендую использовать форматы ISO-8601, такие как 2008-02-01T09:00:22+05, это двусмысленно