Подтвердить что ты не робот

Как получить время определенного часового пояса с помощью javascript?

Я использую javascript Date Class и пытаюсь получить текущую дату с помощью метода getDate(). Но, очевидно, это дата и время загрузки системы. Я запускаю код из Индии, но я хочу получить дату и время Великобритании, используя тот же метод. Как я могу это сделать?

4b9b3361

Ответ 1

Если вы знаете смещение UTC, вы можете передать его и получить время, используя следующую функцию:

function calcTime(city, offset) {
    // create Date object for current location
    var d = new Date();

    // convert to msec
    // subtract local time zone offset
    // get UTC time in msec
    var utc = d.getTime() - (d.getTimezoneOffset() * 60000);

    // create new Date object for different city
    // using supplied offset
    var nd = new Date(utc + (3600000*offset));

    // return time as a string
    return "The local time for city"+ city +" is "+ nd.toLocaleString();
}

alert(calcTime('Bombay', '+5.5'));

Ответ 2

Вы можете использовать Intl.DateTimeFormat.

var options = {
    timeZone: 'Europe/London',
    year: 'numeric', month: 'numeric', day: 'numeric',
    hour: 'numeric', minute: 'numeric', second: 'numeric',
},
    formatter = new Intl.DateTimeFormat([], options)
formatter.format(new Date())

Кроме того, если вы форматируете только один раз вместо массового использования, Date.prototype.toLocaleDateString().

(new Date()).toLocaleString([], options)

К сожалению, браузеру не требуется понимать часовые пояса, отличные от UTC, поэтому try эти блоки и определить альтернативу в случае неудачи, например, получить смещение часового пояса от сервера.

Ответ 3

Лучший способ сделать это - использовать getLocaleString, например:

Создайте объект даты:

date = new Date(0)

Если вы находитесь в Берлине, это должно преобразовать в эту строку:

Thu Jan 01 1970 01:00:00 GMT + 0100 (CET)

Получите часы в Афинах:

date.toLocaleString('de-DE', {hour: '2-digit',   hour12: false, timeZone: 'Europe/Athens' })

'02'

Получите часы в Шанхае:

date.toLocaleString('de-DE', {hour: '2-digit',   hour12: false, timeZone: 'Asia/Shanghai' })

'08'

Ответ 4

Это правильный способ получить ##

function getTime(offset)
        {
            var d = new Date();
            localTime = d.getTime();
            localOffset = d.getTimezoneOffset() * 60000;

            // obtain UTC time in msec
            utc = localTime + localOffset;
            // create new Date object for different city
            // using supplied offset
            var nd = new Date(utc + (3600000*offset));
            //nd = 3600000 + nd;
            utc = new Date(utc);
            // return time as a string
            $("#local").html(nd.toLocaleString());
            $("#utc").html(utc.toLocaleString());
        }

Ответ 5

Вы можете использовать getUTCDate() и связанные с ним методы getUTC...() для доступа к времени, основанному на времени UTC, а затем конвертировать.

Если вы хотите, вы можете использовать valueOf(), который возвращает количество секунд в UTC, начиная с эпохи Unix, и работает с этим, но, скорее всего, это будет гораздо больше.

Ответ 6

короткий ответ с клиентской стороны: НЕТ, вы должны получить его со стороны сервера.

Ответ 7

Если действительно важно, чтобы у вас были правильные дата и время; лучше всего иметь сервис на своем сервере (который, конечно же, вы используете в UTC), который возвращает время. Затем вы можете создать новую дату на клиенте и сравнить значения и при необходимости скорректировать все даты со смещением от времени сервера.

Зачем? У меня были отчеты об ошибках, которые трудно воспроизвести, потому что я не мог найти сообщения об ошибках в журнале сервера, пока не заметил, что отчет об ошибке был отправлен по почте через два дня после его получения. Вероятно, вы можете доверять браузеру правильно обрабатывать преобразование временной зоны при отправке отметки времени UTC, но вы, очевидно, не можете доверять пользователям, чтобы их системные часы были правильно установлены. (Если у пользователей также установлен неверный временной интервал, на самом деле нет никакого решения, кроме печати текущего времени сервера в "локальном" времени)

Ответ 8

Date.getTimezoneOffset()

Метод getTimezoneOffset() возвращает разницу во времени между средним временем по Гринвичу (GMT) и местным временем в минутах.

Например, если ваш часовой пояс GMT + 2, возвращается -120.

Примечание. Этот метод всегда используется вместе с объектом Date.

var d = new Date()
var gmtHours = -d.getTimezoneOffset()/60;
document.write("The local time zone is: GMT " + gmtHours);
//output:The local time zone is: GMT 11

Ответ 9

Метод .getTimezoneOffset() должен работать. Это позволит получить время между вашим часовым поясом и GMT. Затем вы можете рассчитать все, что хотите.