nodejs将时间戳string转换为具有自定义时区和UTC的date

假设我得到的值是'2014-03-03 16:20:20'作为input,我想将它转换为实时与时区(即节点坐落在欧洲,但时间戳收集在美国),之后,我想获得实际值的UTC表示。

任何想法什么软件包可以帮助? 尝试moment.js没有运气..

终于用momentjs-timezonefind了答案,

这是有点滑稽,因为你不会得到一个事件暗示在主网站http://momentjs.com/timezone/,但你可以在http://github.com/moment/moment-timezonefind它

无论如何,这是你如何做到这一点:

 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')); 

和输出,你可以看到respectivly

 2014-03-03 04:20:20 2014-03-03 02:20:20 
 // 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"); 

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

  1. 你能格式inputISOdate加时区信息,如2014-03-03T16:20:20-05:00(假设你从当地时间格林尼治标准时间-5时区)
  2. 然后调用: moment.parseZone('2014-03-03T16:20:20-05:00')。zone(1).format() (假设你想在GMT + 1时区得到本地时间)

希望有所帮助,Ron

时区是一个优雅的模块。

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

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