我需要下一个流程:
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中是否存在这种可能性?
答案 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,它是解析,验证和解析的最佳选择。改变不同时区的时间。