Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用JavaScript获取特定时区的日期时间_Javascript_Date - Fatal编程技术网

使用JavaScript获取特定时区的日期时间

使用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

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)

这里有一个例子:

您总是可以获得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