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

时间:2012-05-16 09:36:32

标签: javascript node.js datetime timezone

我需要下一个流程:

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中是否存在这种可能性?

5 个答案:

答案 0 :(得分:33)

您可以使用node-time,如下所示:

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)

答案 1 :(得分:15)

Moment.js现在有 Moment Timezone

安装

npm install --save moment-timezone

使用

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

答案 2 :(得分:6)

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

  

启用时区功能,直接替换库存JavaScript日期。   timezoneJS.Date对象与JS Date兼容,具有   相同的getter和setter方法 - 它应该可以在任何代码中正常工作   适用于普通的JavaScript日期。


没有没有

但您可以使用 moment.js 来简化http://momentjs.com/docs/

您仍然需要知道每个偏移量,因此您需要像{"Europe/Amsterdam":2,"Europe/Kiev":3}

这样的映射

答案 3 :(得分:2)

请参阅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库,没有依赖关系,提供时区感知日期数学和日期格式。
  •   
  • 自标准化时间开始以来,时区使用IANA数据库确定世界任何地方的正确挂钟时间。
  •   
  • 时区使用strftime格式的完整实现格式化日期,包括GNU日期扩展。
  •   
  • 时区表示使用RFC 3999日期字符串的POSIX时间和本地时间的时间。
  •   
  • Timezone是纯JavaScript中基于全功能标准的时间库,适用于3K以下的缩小和压缩。
  •   

答案 4 :(得分:0)

使用moment-timezone.js,它是解析,验证和解析的最佳选择。改变不同时区的时间。