Какой часовой пояс использует новый Date() в JavaScript?
У меня есть приложение С#, которое возвращает в JSON дату истечения срока действия маркера аутентификации следующим образом:
"expirationDate":"Fri, 27 Mar 2015 09:12:45 GMT"
В моем TypeScript я проверяю, что дата все еще действительна здесь:
isAuthenticationExpired = (expirationDate: string): boolean => {
var now = new Date().valueOf();
var exp: any = Date.parse(expirationDate).valueOf();
return exp - now <= 0;
};
Что я хотел бы знать, как использовать часовой пояс new Date()
, когда он возвращает дату?
Ответы
Ответ 1
JavaScript будет использовать местное время клиента, но также имеет методы UTC/GMT. Следующее от Mozilla:
Объект JavaScript Date поддерживает ряд универсальных (UTC) методов, а также методы локального времени. UTC, также известное как среднее время по Гринвичу (GMT), относится к времени, установленному стандартом мирового времени. Местное время - это время, известное компьютеру, на котором выполняется JavaScript.
Хотя доступны методы для доступа к дате и времени как в формате UTC, так и в местном часовом поясе, дата и время хранятся в местном часовом поясе:
Примечание: Важно помнить, что дата и время хранятся в местном часовом поясе, и что основные методы получения даты и времени или их компонентов также работают в местном часовом поясе.
Ссылка: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date
Ответ 2
Как и все сказанное, JavaScript использует системное время клиентов, но вы можете создать объект даты из времени сервера, поэтому каждый клиент получит то же самое текущее время.
var date = new Date("<?php echo date("Y-m-d H:i:s");?>");
Он будет работать только при загрузке страницы. Если вы хотите проверить позже, если даты еще действительны, вам необходимо синхронизировать текущую дату с датой сервера каждые пару секунд.
Ответ 3
По умолчанию JS будет использовать часовой пояс вашего браузера, но если вы хотите изменить отображение, вы можете, например, использовать функцию toString()
;)
var d1=new Date();
d1.toString('yyyy-MM-dd'); //returns "2015-03-27" in IE, but not FF or Chrome
d1.toString('dddd, MMMM ,yyyy') //returns "Friday, March 27,2015" in IE, but not FF or Chrome
Ответ 4
В каком часовом поясе используется новая дата Date() Javascript?
Date
объекты работают с количеством миллисекунд со времен Эпохи (1 января 1970 года в полночь GMT). У них есть методы типа getDay
и getMonth
и такие, которые используют локальный часовой пояс для механизма JavaScript, а также такие функции, как getUTCDay
и getUTCMonth
, которые используют UTC (свободно, GMT).
Если вы разбираете строку, вы должны быть уверены, что строка находится в формате, который Date
умеет анализировать. В спецификации указан только определенный формат упрощенный производный от ISO-8601, но он был добавлен только в ES5 и они ошибались в спецификации о том, что должно произойти, если в строке нет индикатора часового пояса, поэтому вам обязательно нужно иметь индикатор часовой пояс (на данный момент ES6 исправит его, и в конечном итоге двигатели будут надежно использовать поведение ES6). Эти строки выглядят следующим образом:
"2015-03-27T09:32:54.427Z"
Вы можете создать этот формат с помощью метода toISOString
.