Как получить локальный часовой пояс из системы с помощью nodejs

есть ли способ получить локальный часовой пояс из системы (например:- ubuntu) с помощью nodejs?

Я использовал момент.JS для извлечения значений даты и времени. Но не смог найти способ извлечь часовой пояс.

3 ответов


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

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

например, смещение UTC+2: 00 может относиться к Барселоне летом или кот-Д'Ивуару круглый год. Смещение 2hr всегда будет отображать правильное время в Кот-Д'Ивуаре, но будет 1hr в течение полугода в Барселоне.

Как мы обслуживаем все эти вопросы часового пояса? Ну, это довольно просто:

  1. сохранить все время в UTC
  2. сохранить имя часового пояса, где это произошло

в JavaScript, вы может использовать часовой пояс момента для угадайте часовой пояс пользователей хотя я только проверил это в браузере:

moment.tz.guess(); // eg. 'America/Chicago'

вы можете использовать эту строку часового пояса в Момент Часовой Пояс чтобы помочь компенсировать захваченное время UTC.


Это очень просто.

var x = new Date();
var offset= -x.getTimezoneOffset();
console.log((offset>=0?"+":"-")+parseInt(offset/60)+":"+offset%60)

и нет ничего другого или вы можете увидеть, если momentJS могу помочь вам или нет.


я решил это использовать момент.js (http://momentjs.com/docs/)

var moment = require('moment');
var offset = moment().utcOffset();
console.log(''.concat(offset < 0 ? "-" : "+",moment(''.concat(Math.abs(offset/60),Math.abs(offset%60) < 10 ? "0" : "",Math.abs(offset%60)),"hmm").format("HH:mm")));

------ редактировать--------

Я нашел лучшее решение, используя moment.js. Просто используйте moment().format('Z')

который дает выход:

+05:30