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

Как получить UTC смещение в javascript (аналог TimeZoneInfo.GetUtcOffset в С#)

В С# вы можете использовать

System.TimeZone.CurrentTimeZone.GetUtcOffset(someDate).Hours

Но как мне получить смещение UTC в часах на определенную дату (объект Date) в javascript?

4b9b3361

Ответ 1

Ответ Вадима может дать вам десятичные точки после деления на 60; не все смещения являются идеальными кратными 60 минутами. Вот что я использую для форматирования значений для строк ISO 8601:

function pad(value) {
    return value < 10 ? '0' + value : value;
}
function createOffset(date) {
    var sign = (date.getTimezoneOffset() > 0) ? "-" : "+";
    var offset = Math.abs(date.getTimezoneOffset());
    var hours = pad(Math.floor(offset / 60));
    var minutes = pad(offset % 60);
    return sign + hours + ":" + minutes;
}

Это возвращает значения типа "+01: 30" или "-05: 00". Вы можете извлечь числовые значения из моего примера, если это необходимо для выполнения вычислений.

Обратите внимание, что getTimezoneOffset() возвращает количество разниц в минутах от UTC, так что значение кажется противоположным (отрицательным) для того, что необходимо для таких форматов, как ISO 8601. Следовательно, почему я использовал Math.abs() (что также помогает не получая отрицательных минут) и как я построил тройной.

Ответ 2

<script type="text/javascript">

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

</script>

Ответ 3

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

В этом случае вы можете получить ISO 8601 отформатированное UTC-смещение, выполнив:

> moment().format("Z")
> "-08:00"