似乎JavaScript的Date()函数只能返回本地日期和时间。无论如何都要为特定时区腾出时间,例如GMT-9?
结合@ Esailija和@ D3mon-1stVFW,我想出来了:你需要有两个时区偏移,一个用于本地时间,一个用于目的地时间,这是工作代码:
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)
这里有一个例子:http://jsfiddle.net/BBzyN/3/
答案 0 :(得分:21)
var offset = -8;
new Date( new Date().getTime() + offset * 3600 * 1000).toUTCString().replace( / GMT$/, "" )
"Wed, 20 Jun 2012 08:55:20"
<script>
var offset = -8;
document.write(
new Date(
new Date().getTime() + offset * 3600 * 1000
).toUTCString().replace( / GMT$/, "" )
);
</script>
答案 1 :(得分:5)
var today = new Date();
var offset = -(today.getTimezoneOffset()/60);
答案 2 :(得分:1)
有一个简单的工作时区的库,可以在https://github.com/mde/timezone-js找到名为TimezoneJS的时区。
答案 3 :(得分:0)
您可以随时获得GMT时间(只要客户的时钟正确)。
要在任意时区显示日期,请在添加偏移后的UTC小时,分钟和秒内构建一个字符串。
答案 4 :(得分:0)
您可以在一行中完成此操作:
let d = new Date(new Date().toLocaleString("en-US", {timeZone: "timezone id"})); // timezne ex: Asia/Jerusalem