Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как узнать есть ли в дате часовой пояс? (https://javascript.ru/forum/misc/64646-kak-uznat-est-li-v-date-chasovojj-poyas.html)

laimas 31.08.2016 03:17

Цитата:

Сообщение от Shitbox2
Она работает только со строками

А что кроме метки времени или его отдельно взятого компоненте есть не строка в его представлении?

Цитата:

Сообщение от Shitbox2
не уверен, что эта библиотека будет нормально все ситуации обрабатывать

Не могу утверждать об аналоге, хотя можно и проверить, но оригинальная strtotime обрабатывает английскую нотацию выражений о времени и ей по плечу куда более прозаическое, чем "UTC или не UTC?". )

Shitbox2 31.08.2016 11:14

Цитата:

А что кроме метки времени или его отдельно взятого компоненте есть не строка в его представлении?
Не понял вопрос
Цитата:

оригинальная strtotime обрабатывает английскую нотацию выражений о времени и ей по плечу куда более прозаическое, чем "UTC или не UTC?"
Вот это как раз, вообще, пофигу) Если пользователь юзает какую-то свою нотацию времени из каких-то непонятных стандартов, пусть сам с этим и мучается. А вот UTC, не UTC это реальная проблема JS. К сожалению, до конца ее не решить, т.к. реализация отличается в ES5, ES6, в браузерах и даже на разных машинах может по-разному работать

laimas 31.08.2016 12:47

Цитата:

Сообщение от Rise
timestamp который всегда UTC

С чего это вдруг?

laimas 31.08.2016 13:05

Цитата:

Сообщение от Shitbox2
Не понял вопрос

Что не понятного, представление времени это всегда строка, за исключением штампа времени и конкретно взятого его компонента, например год. А strtotime и работает со строковым представлением, возвращая штамп времени.

Цитата:

Сообщение от Shitbox2
Если пользователь юзает какую-то свою нотацию времени из каких-то непонятных стандартов

Ну это как сказать, по крайней мере проще написать:

$day = date('d', strtotime('first day next week'));


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

laimas 31.08.2016 14:10

Цитата:

Сообщение от Rise
а как иначе

Вы спутали системные часы и смещения часовых поясов. Системные часы и работают относительно Гринвича, достаточно указать другой часовой пояс системным часам и время изменится. Но время клиента, это локальное время. Например, если клиент получит время московского клиента как дата/время и дата/время/UTC, то на клиенте из этих дат будет возвращены метки времени - первая как локальное время клиента, а вторая с указанным смещением, и эти метки времени будут различны.

laimas 31.08.2016 15:53

Цитата:

Сообщение от Rise
суть была в том что дата/время должно храниться/передаваться в виде timestamp

Не обязательно timestamp, главное чтобы представление было одно, но как уже отвечал автор на подобное предложение - источник данных не подконтролен ему.

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

Shitbox2 06.09.2016 12:46

Выпустил модуль normalize-date. Приводит любую дату к нативной JS UTC (или эквивалентной UTC) дате.

Надеюсь, это избавит от проблем сравнения дат в 90% случаев


Часовой пояс GMT +3, время: 18:12.