Получить текущую временную метку из определенного часового пояса в JavaScript - PullRequest
0 голосов
/ 21 января 2019

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

Я хочу, чтобы мои клиенты со всего мира видели ту же самую метку времени.Это вообще возможно?Я не хочу решения в node.js, но если есть рабочая библиотека, пожалуйста, включите ее.

Ответы [ 2 ]

0 голосов
/ 21 января 2019

Вы говорите, что хотите получить метку времени для «определенного часового пояса». Если вы знаете, каково смещение часового пояса для этого конкретного часового пояса, вы сможете получить дату UTC, вычесть из нее смещение часового пояса и вывести строку даты, которая должна быть одинаковой для всех клиентов. Это утверждение должно работать:

var timeZoneOffset = 300; // Eastern Standard Time
var sameDate = (new Date(((new Date()) - (timeZoneOffset * 60 * 1000)))).toISOString()

new Date() должно возвращать одно и то же время в миллисекундах на всех клиентах, если дата и время локальных компьютеров точны. Смещения часового пояса указаны в минутах, поэтому их необходимо умножить на 60 * 1000 (60 секунд / минут, умноженных на 1000 миллисекунд / секунду), а затем вычесть это количество миллисекунд из даты UTC, чтобы получить его равным текущему времени в часовом поясе, которое имеет это смещение. Затем преобразуйте его в строку ISO. Вы можете манипулировать получающейся строкой, если хотите. Возможно, избавиться от Z на конце.

var dateWithoutZ = sameDate.slice(0,-1);
0 голосов
/ 21 января 2019

Вы можете сгенерировать независимую от часового пояса метку времени с помощью JavaScript, используя объект Date или с помощью специализированных библиотек, таких как moment.js :

const timestampMilliseconds = (new Date()).getTime();
console.log(timestampMilliseconds);

const timestampSeconds = Math.round((new Date()).getTime() / 1000);
console.log(timestampSeconds);

const timestampSecondsMoment = moment().unix();
console.log(timestampSecondsMoment)
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.23.0/moment.min.js"></script>
...