使用JavaScript获取特定时区的日期时间
JavaScript的Date()函数似乎只能返回本地日期和时间。是否有任何方法可以获取特定时区的时间,例如GMT-9 结合@Esailija和@D3mon-1stVFW,我算出了:你需要有两个时区偏移,一个用于本地时间,一个用于目的地时间,下面是工作代码:使用JavaScript获取特定时区的日期时间,javascript,date,Javascript,Date,JavaScript的Date()函数似乎只能返回本地日期和时间。是否有任何方法可以获取特定时区的时间,例如GMT-9 结合@Esailija和@D3mon-1stVFW,我算出了:你需要有两个时区偏移,一个用于本地时间,一个用于目的地时间,下面是工作代码: var today = new Date(); var localoffset = -(today.getTimezoneOffset()/60); var destoffset = -4; var offset = destof
var today = new Date();
var localoffset = -(today.getTimezoneOffset()/60);
var destoffset = -4;
var offset = destoffset-localoffset;
var d = new Date( new Date().getTime() + offset * 3600 * 1000)
这里有一个例子:您总是可以获得GMT时间(只要客户机的时钟正确) 若要显示任意时区中的日期,请在添加偏移量后根据UTC小时、分钟和秒构造一个字符串
var offset = -8;
new Date( new Date().getTime() + offset * 3600 * 1000).toUTCString().replace( / GMT$/, "" )
"Wed, 20 Jun 2012 08:55:20"
var偏移量=-8;
document.write(
新日期(
新日期().getTime()+偏移量*3600*1000
).ToutString().replace(/GMT$/,“”)
);
有一个简单的用于处理时区的库,很容易称为TimeZoneJ。可以在中找到。您可以在一行中完成此操作:
let d = new Date(new Date().toLocaleString("en-US", {timeZone: "timezone id"})); // timezone ex: Asia/Jerusalem
var偏移量=-8;var d=新日期(新日期()+偏移量*3600*1000)警报(d);会给我错误的PST时间(现在显示的是03:06而不是10:06),这里有什么问题吗?@Yang yea,在我最新的编辑中使用
.getTime()
补丁。我在测试中没有使用变量,“+”
将其转换为字符串连接。哦,以UTC为单位,模拟不同的时区。因此正确的答案应该是.toutString
而不是.toString
(这就是警报(d)
所做的)@Yang请粘贴您正在使用的确切代码片段。无论如何,它应该显示09:12
(或者08:12
对于-9
)@Yang只要使用UTC方法getUTCHours()
,getUTCMinutes()
,toutstring()
等,alert(d)
的问题是它没有alert(d.toString())
,在这种情况下,您想在哪里使用ToutString
。这是否考虑了本地和目的地偏移量中的夏令时?您根本不需要这样做。请阅读我关于使用UTC
方法的评论。不推荐使用可能重复的方法
let d = new Date(new Date().toLocaleString("en-US", {timeZone: "timezone id"})); // timezone ex: Asia/Jerusalem