nodejs将时间戳字符串转换为具有自定义时区和UTC的日期

时间:2014-03-11 13:38:12

标签: javascript node.js timezone

假设我得到值'2014-03-03 16:20:20'作为输入,我想转换它 到了它的实时时区(即节点位于欧洲,但时间戳是在美国收集的),之后我想得到真实值的UTC表示。

知道什么包可以提供帮助吗?尝试了没有运气的时刻。

4 个答案:

答案 0 :(得分:2)

终于找到了momentjs-timezone

的答案

这有点好笑,因为你不会在事件http://momentjs.com/timezone/上发现事件,但你可以在http://github.com/moment/moment-timezone上找到它

无论如何,这是你如何做到的:

var tz0 = moment.tz("2014-03-03 16:20:20", "Asia/Jerusalem")
var tz1 = moment.utc(tz0);


console.log(tz0.format('YYYY-MM-DD hh:mm:ss'));
console.log(tz1.format('YYYY-MM-DD hh:mm:ss'));

和你可以看到的输出

2014-03-03 04:20:20
2014-03-03 02:20:20

答案 1 :(得分:0)

// moment.js

var utc = moment('2014-03-03 16:20:20','YYYY-MM-DD HH:mm:ss', 'us');
// or timezone string pass from client

var eu = utc.zone("+02:00");
var eu = utc.zone("-02:00");

答案 2 :(得分:0)

momentjs可能对你有所帮助。如下所示:

  1. 您可以使用ISO日期加时区信息格式化输入,例如2014-03-03T16:20:20-05:00(假设您从当地时间GMT-5时区获得)
  2. 然后致电: moment.parseZone('2014-03-03T16:20:20-05:00')。zone(1).format()(假设您想获得当地时间在GMT + 1时区)
  3. 希望有所帮助, 罗恩

答案 3 :(得分:0)

Timezone是一个优雅的模块。

var tz = require("timezone/loaded");
var formattedDate = tz(unformattedTimestamp, '%d %B %Y, %-I:%M %p', "Europe/Amsterdam");

您可以使用bootstraphelper来捕获用户的时区。