26

我需要下一个流程:

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

4

5 回答 5

34

您可以使用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)
于 2012-05-30T23:47:28.517 回答
16

Moment.js 现在有Moment 时区

安装

npm install --save moment-timezone

使用

var Moment = require('moment-timezone');
Moment().tz('America/Los_Angeles').format();
于 2014-03-17T05:10:43.067 回答
6

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

一个启用时区的、插入式替换股票 JavaScript 日期。timezoneJS.Date 对象与 JS Date API 兼容,具有相同的 getter 和 setter 方法——它应该可以在任何与普通 JavaScript 日期一起使用的代码中正常工作。


不,那里没有

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

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

于 2012-05-16T14:53:02.037 回答
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 以下的压缩和 gzip 压缩。
于 2015-03-08T19:23:26.483 回答
0

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

于 2015-06-08T04:39:45.123 回答