我如何使用moment.js
和moment-timezone.js
将特定时区(非本地)的指定日期/时间转换为UTC
我用:
var s = moment("10/15/2014 09:25 AM").tz("America/Los_Angeles").format('hh:mm:ss a');
当我想在moment()
上给出一个值时,我遇到了困难
让我向你解释一下事实:
我必须使用以下格式从单元格中获取日期/时间值:10/15/2014 09:25 AM (MM/DD/YYYY h:mm a)
。此值不是常量值,是某些条目的打开时间。
我想用UTC转换这个字符串。不幸的是,该字符串不是我当地时间,位于America/Los_Angeles (PDT/PST)
时区。我还要自动关注PDT(9 Mar, 2 Nov)
和PST
。
-10/15/2014 09:25 AM America/Los_Angeles -07:00 => 10/15/2014 04:25 PM UTC 00:00
-12/15/2014 09:25 AM America/Los_Angeles -08:00 => 12/15/2014 05:25 PM UTC 00:00
我该怎么做?
如果我使用:
Var s = moment("10/15/2014 09:37 PM").tz("America/Los_Angeles").format('hh:mm:ss a');
...它将被解析为我当地时间,并将转换为America/Los_Angeles
。
- 10/15/2014 09:25 AM Eastern European Time +03:00 => 10/15/2014 11:25 PM America/Los_Angeles +07:00
我认为我的问题的简短描述是这样的:
- 我怎么能告诉"脚本,该字符串10/15/2014 09:37 AM
来自特定时区。在此之后,转换为UTC
是件小事。
感谢。
答案 0 :(得分:0)
当您要解析具有特定时区的日期字符串时,必须提供模式,UTC除外。对于UTC,您只需提供日期字符串。
用法:moment.tz(string,pattern,zoneString)
在你的情况下:
var moment = require("moment-timezone");
var d1 = moment.tz("10/15/2014 09:25 AM", "MM/DD//YYYY hh:mm A", "America/Los_Angeles");
d1.toString(); // Wed Oct 15 2014 09:25:00 GMT-0700
d1.tz("UTC").format('hh:mm:ss a'); // '04:25:00 pm'
如果省略格式化程序,则解析错误,但有一个弃用的注释:https://github.com/moment/moment/issues/1407
阅读此http://momentjs.com/timezone/docs/#/using-timezones/parsing-ambiguous-inputs/以处理DST