如何使用nodejs从系统获取本地时区
有没有办法从系统(例如: – Ubuntu的)使用nodejs获得本地时区?
我使用了moment.js来提取date和时间值。 但是找不到提取时区的方法。
现有的答案会告诉你当前的时区偏移量,但如果你比较历史/未来的时间点,你将会遇到问题,因为这不会迎合夏时制的变化。
在许多时区,偏差在一年中变化,这些变化发生在不同的date,或根本不取决于纬度。 如果您只有UTC时间和偏移量,则无法确定一年中各个时间点在该位置的偏移量。
例如,UTC + 2:00的偏移量可以在夏季或象牙海岸全年提及巴塞罗那。 2小时抵消将总是显示在象牙海岸的正确时间,但在巴塞罗那将是1个半年的时间。
我们如何迎合所有这些时区问题? 那么这很简单:
- 以UTC保存所有时间
- 存储发生这种情况的时区名称
在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.js
find了一个更好的解决scheme。 只需使用moment().format('Z')
这给出了输出:
+05:30