Date.getUTCDate () возвращает разные результаты в разных часовых поясах - Javascript - PullRequest
0 голосов
/ 27 августа 2018

Объект Javascript Date() сводит меня с ума.Я пытаюсь получить текущую дату UTC (mm/dd/yyyy).Мне нужно, чтобы дата была одинаковой в любой точке мира.Итак, для этого я использовал методы UTC, такие как (new Date()).getUTCDate()).Однако недавно, когда пользователь пожаловался, я обнаружил, что возвращаемое значение не везде одинаково.

Мне нужен определенный способ получить текущую дату (не прошедшую) в соответствии с универсальным временем.

(new Date()).getTime() у меня не работает, так как возвращает его в миллисекундах.

Мой код:

function getToday() {
    var today = new Date();
    var dd = today.getUTCDate();
    var mm = today.getUTCMonth() + 1; //January is 0!
    var yyyy = today.getUTCFullYear();

    if (dd < 10) {
        dd = '0' + dd
    }

    if (mm < 10) {
        mm = '0' + mm
    }

    today = mm + '/' + dd + '/' + yyyy
    return today;
}

console.log(getToday());

РЕДАКТИРОВАТЬ:

Я связался с этим пользователем и сказал ему, чтобы в основном выполнить (new Date()).getUTCDate()).Его отключили на один день (правильный ответ - 27)

info

Кроме того, его смещение часового пояса составило 180

offset

Он использует Chrome на компьютере с Windows (я не знаю, какая версия)

EDIT2:

Я только что кое-что сделал и нашелчто-то странное.

Мой пользователь сказал, что у него были проблемы в 12:00 каждый день, когда день меняется.Он сказал мне, что у меня были проблемы в 9:53 вечера на мое время.Зная, что у него смещение часового пояса 180 минут, а у меня смещение часового пояса 240, я могу рассчитать его время в этот момент, выполнив myTime + offsetDifference.Это однако (((9*60 + 53) + (240 - 180)) / 60) равняется приблизительно 11:00.Таким образом, его время на ПК ДОЛЖНО быть обратно на 1 час.

Возможно, он мог бы вручную установить свое время с неправильным часовым поясом.

1 Ответ

0 голосов
/ 27 августа 2018

Видимо, мой пользователь не установил свой часовой пояс, а вместо этого просто установил часы.Если это так, как отметил Джонатан Грей, время UTC будет неправильным, даже если время проверяется локально.Он установил свой часовой пояс, и он работает.

Кроме того, как отметил Фил, если кто-то хочет надежного универсально стандартизированного времени, он должен использовать надежный бэкэнд, где время всегда будет правильным.Для этого я также нашел сайт под названием World Clock API .Но, как я заметил, для надежного сервиса, который гарантирует, что он будет работать, когда ваш сайт работает, вы должны интегрировать его в свой сервер.Простым способом было бы использование PHP-метода time () и вычисление смещения относительно времени клиента.

...