如何在Nodejs中使用时区偏移?

我需要下一个stream程:

var a = new Date(1337324400000, 'Europe/Amsterdam'); //+2h console.log(a); // for example 12:00 Mon ... a.setTimeZone('Europe/Kiev'); //+3h console.log(a); // 13:00 Mon ... 

nodejs utils api中有这种可能吗?

您可以使用节点时间 ,如下所示:

 var time = require('time'); var a = new time.Date(1337324400000); a.setTimezone('Europe/Amsterdam'); console.log(a.toString()); // Fri May 18 2012 09:00:00 GMT+0200 (CEST) a.setTimezone('Europe/Kiev'); console.log(a.toString()); // Fri May 18 2012 10:00:00 GMT+0300 (EEST) 

Moment.js现在有Moment Timezone

安装

 npm install --save moment-timezone 

用途

 var Moment = require('moment-timezone'); Moment().tz('America/Los_Angeles').format(); 

更新:现在有另一个:) https://github.com/mde/timezone-js

启用了时区function的库存JavaScriptdate替代版本。 timezoneJS.Date对象与JS Date的API兼容,具有相同的getter和setter方法 – 在任何使用普通JavaScriptdate的代码中,它都能正常工作。


不,那里没有

但是你可以使用moment.js来使它更容易http://momentjs.com/docs/

你仍然需要知道每一个抵消,所以你需要像{"Europe/Amsterdam":2,"Europe/Kiev":3}

请参阅npm中的时区包。 它有一切需要内置的,是纯JS,似乎是最好的时区处理库。

https://www.npmjs.com/package/timezone

http://bigeasy.github.io/timezone/

 var tz = require('timezone/loaded'), equal = require('assert').equal, utc; // Get POSIX time in UTC. utc = tz('2012-01-01'); // Convert UTC time to local time in a localize language. equal(tz(utc, '%c', 'fr_FR', 'America/Montreal'), 'sam. 31 déc. 2011 19:00:00 EST'); 
  • Timezone是纯JavaScript中的MicroJS库,没有提供时区感知datemath和date格式的依赖关系。
  • 自标准化时间开始,Timezone使用IANA数据库在世界任何地方确定正确的挂钟时间。
  • 时区格式的date与完整的strftime格式实现,包括GNUdate扩展。
  • 时区使用RFC 3999datestring表示POSIX时间和本地时间。
  • Timezone是一个全function的基于标准的纯JavaScript时间库,用于3K以下的缩小和压缩。

使用moment-timezone.js,这是在不同时区parsing,validation和更改时间的最佳select。