如何使用nodejs从系统获取本地时区

有没有办法从系统(例如: – Ubuntu的)使用nodejs获得本地时区?

我使用了moment.js来提取date和时间值。 但是找不到提取时区的方法。

现有的答案会告诉你当前的时区偏移量,但如果你比较历史/未来的时间点,你将会遇到问题,因为这不会迎合夏时制的变化。

在许多时区,偏差在一年中变化,这些变化发生在不同的date,或根本不取决于纬度。 如果您只有UTC时间和偏移量,则无法确定一年中各个时间点在该位置的偏移量。

例如,UTC + 2:00的偏移量可以在夏季或象牙海岸全年提及巴塞罗那。 2小时抵消将总是显示在象牙海岸的正确时间,但在巴塞罗那将是1个半年的时间。

我们如何迎合所有这些时区问题? 那么这很简单:

  1. 以UTC保存所有时间
  2. 存储发生这种情况的时区名称

在JavaScript中,您可以使用Moment Timezone来猜测用户的时区,尽pipe我只在浏览器中testing了这个:

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

然后,您可以在Moment Timezone中使用此时区string来帮助抵消捕获的UTC时间。

这很简单。

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

没有什么别的,或者你可以看到,如果能够帮助你。

我使用moment.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.jsfind了一个更好的解决scheme。 只需使用moment().format('Z')

这给出了输出:

+05:30