2016-04-13 4 views
2

Мой вопрос по поводу этой цитаты из инструкции о датах в JavaScript:В соответствии со стороны клиента даты/времени с помощью JavaScript (с учетом часовых поясов)

Примечание: разбор даты строк с конструктором Date (и Дата. parse, они эквивалентны), сильно обескуражен из-за различий браузера и несоответствий.

new Date('2016-04-14') выход для пользователя был Wed Apr 13 2016 17:00:00 GMT-0700 (US Mountain Standard Time), на котором он должен был использовать .toUTCString().

Как справиться с этим, если пользователи находятся во многих разных часовых поясах?

+4

использовать временную метку 'new Date(). GetTime()' вместо строки для хранения и сравнения – gurvinder372

+0

таким образом нам не нужно использовать '.toUTCString()' и другие подобные функции? –

+0

Если вы только не хотите отображать (для этого также вы можете использовать библиотеки для форматирования), я не вижу причин использовать другие функции. – gurvinder372

ответ

1

new Date().getTime(); возвращает целочисленное значение как время на машине клиента с 1970 1 января.

Поскольку это целочисленное значение, оно будет агностиком локалей, версии браузера, разных браузеров (IE, Chrome, Mozilla или что-то еще).

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

Вы можете получить часовой пояс клиента компенсировано с помощью getTimezoneOffset API

var x = new Date(); 
var currentTimeZoneOffsetInHours = x.getTimezoneOffset()/60; 

Это вместе с new Date().getTime(); должны дать вам устойчивые результаты.

1

Если вы используете

new Date().getTime(); 

вернет вам время milisecond печать так 1970-01-01 текущего часового пояса, что клиент находится в. Это может быть преобразован обратно в день в любой язык.

Это будет лучший стандартный способ передачи даты, если вы отправляете ее на серверы и между серверами и между ними. Как миллисекунды временной метки TS преобразуются в часовой пояс а будет конвертировать в 01.01.2010 и часовой пояс б будет конвертировать в 01.01.2010, поскольку они взяты из 1970-01-01

Надежда это делает Sence

 Смежные вопросы

  • Нет связанных вопросов^_^