Какой часовой пояс использует новый 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.