使用timezone-js进行JS时区转换

时间:2013-07-02 12:12:15

标签: javascript timezone

我正在尝试使用timezone-js转换时区并根据区域获取正确的时间。我使用以下线程作为参考。 convert-date-to-another-timezone-in-javascript

但是,当我在构造函数中设置时间并更改时区时,它会显示相同的时间。

我无法根据区域获得转换时间。我试过跟随。

var dt = new timezoneJS.Date("2013/07/02 18:59:00 +0000", 'Asia/Singapore'); 
alert('This is time call ' + dt.getTime()  + dt.getTimezone());
dt.setTimezone("America/Argentina/Mendoza");
alert('This is new time call ' + dt.getTime()  + dt.getTimezone());

两者都显示我的时间为1372791540000.我在这里遗漏了什么吗?


感谢Matt的回答。这确实给了我约会。但是,我肯定错过了使用这个库的概念。我的理解是,一旦我给构造函数一个时间和区域,它将自动调整对象中的UTC,下次我更改区域时,它将根据区域提供正确的时间。

e.g。 - var dt = new timezoneJS.Date("2002/07/08 18:59:00 +0000", 'Asia/Singapore'); 这给了我 2002-07-09 02:59:00 因此,它将第一个参数(日期)作为UTC并相应地调整时间。这是正确的行为吗?

然后dt.setTimezone("America/Argentina/Mendoza"); => 2002-07-08 15:59:00

1 个答案:

答案 0 :(得分:1)

getTime()将始终返回自1970年1月1日 UTC 以来的毫秒数。将时间表示为单个整数时没有时区。

documentation中,您会发现以下示例作为证据:

var dtA = new timezoneJS.Date(2007, 9, 31, 10, 30, 'America/Los_Angeles');
var dtB = new timezoneJS.Date(2007, 9, 31, 12, 30, 'America/Chicago');
// Same timestamp
dtA.getTime(); => 1193855400000
dtB.getTime(); => 1193855400000

对于时区特定输出,请尝试.toString()