1

我正在尝试使用 timezone-js 转换时区并根据地区获取正确的时间。我使用以下线程作为参考。 在 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。我在这里错过了什么吗?


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

例如 -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

4

1 回答 1

1

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

文档中,您将找到以下示例作为证明:

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()

于 2013-07-02T14:15:58.090 回答