2014-10-17 37 views
0

II如何将特定日期/时间转换为特定时区(非本地)以UTC使用moment.jsmoment-timezone.js
我用:如何使用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)和。

-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

必须提供一种模式,当你想解析一个具有特定时区的日期字符串,UTC除外。对于UTC,您可以提供日期字符串。

用法:moment.tz(字符串,模式,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

相关问题