2011-09-27 65 views
1

不同的时区,我有一个datestring,从外部源拉,看起来像这样:读取日期字符串在JavaScript中

9/25/2011 4:38:40 PM 

该源在该PDT时区。

我想用这个信息创建一个UTC日期,使用date.js。我目前使用此代码来解析它:

var dateString = '9/25/2011 4:38:40 PM'; 
var d = Date.parseExact('9/25/2011 4:38:40 PM', 'M/d/yyyy H:m:s tt'); 

尽管这确实会加载日期,但它的确如此,就好像它在我的时区中一样。我如何告诉date.js我告诉它的日期来自不同的时区?

+0

请注意,时区的缩写或首字母缩写没有标准,许多都是模棱两可(EST用于3个不同的时区)。使用实际偏移量(根据ECMA-262 15.9.1.15)要好得多。 – RobG

+0

@RobG:我完全忘了 - 好点。 – Eric

回答

1

使用时区格式说明...

var dateString = '9/25/2011 4:38:40 PM EST'; 
var d = Date.parseExact(dateString, 'M/d/yyyy H:m:s tt Z'); 
+0

我实际上没有控制字符串。我应该在解析它之前在结尾附加时区吗? – Eric

+0

@Eric,哪个字符串? dateString或格式字符串?如果dateString那么你可以追加时区,假设你知道所有情况下的值。 –

+0

dateString。尽管@RobG说,我应该使用偏移量而不是3个字母的代码。 – Eric

0

你有没有尝试过这样的事情?:

var dateString = '9/25/2011 4:38:40 PM'; 

var date = Date.parseExact(dateString, format); 
var utc_date = new Date(date.getTime() - (date.getTimezoneOffset() * 60000)) 
1

把一封日期格式将意味着该时区。我没有测试过这一点,但:

Date.parseExact(dateString + " PDT", "M/d/yyyy H:m:s tt e") 

不考虑夏令时的变化(而不是PST PDT),但你得到的要点。