Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.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 如何从js中的时区获取UTC偏移量_Javascript - Fatal编程技术网

Javascript 如何从js中的时区获取UTC偏移量

Javascript 如何从js中的时区获取UTC偏移量,javascript,Javascript,使用普通JavaScript(即而不使用矩.js) 我有一个服务器返回一个时区字符串,比如Asia/TokyoAmerica/New\u York等等。。。 该时区独立于用户当前时区。因此,当我的当前操作系统时区为美国/纽约时,服务器可以返回亚洲/东京 从给定时区的服务器,我想将其格式化为=> UTC+09:00亚洲/东京 简单地说,我只想,从一个给定的时区,找到该时区的UTC偏移量 JS中有一个本机函数getTimezoneOffset,但我找不到setTimezone 我试着做一些类似的事情

使用普通JavaScript(即而不使用矩.js

我有一个服务器返回一个时区字符串,比如
Asia/Tokyo
America/New\u York
等等。。。 该时区独立于用户当前时区。因此,当我的当前操作系统时区为美国/纽约时,服务器可以返回
亚洲/东京

从给定时区的服务器,我想将其格式化为=>

UTC+09:00亚洲/东京

简单地说,我只想,从一个给定的时区,找到该时区的UTC偏移量

JS中有一个本机函数
getTimezoneOffset
,但我找不到
setTimezone

我试着做一些类似的事情

var d = new Date()
new Date(d.toLocaleString('en-US', { timeZone: 'Asia/Tokyo' })).getTimezoneOffset()
但这总是返回我当前的偏移量

我该怎么做呢?

你可以用它来计算,这个解决方案有点粗糙,因为我们正在格式化一个日期,然后进行解析。但它应该做你想做的

我将转换为“sv”日期格式,因为它与ISO-8601非常相似,然后解析以获得UTC日期

注:格林威治子午线以东时区的偏移量为负值,这与IANA惯例相同。如果希望在UTC前几分钟获得UTC偏移量,可以简单地反转。 另外,我在最后四舍五入,因为我们最初的日期将包含一个我们不感兴趣的毫秒分量

函数getUTCOffset(日期、时区){ const dateComponents=date.tolocalString(“sv”,{timeZone}).split(/[\-\s://); //在JavaScript中,月份是以零为基础的 dateComponents[1]=dateComponents[1]-1; const utcDate=Date.UTC(…dateComponents); 返回数学整数((日期-utcDate)/60/1000); } log(getUTCOffset(新日期(),'Asia/Tokyo');
log(getUTCOffset(新日期(),'America/Los_Angeles')时区是否独立于当前时区?您能详细说明一下吗?本机JavaScript API不支持除本地时区(即用户将其操作系统设置为什么)和UTC以外的任何时区。@its4zahoor基本上是指如果我在美国/纽约,并且服务器提供
Asia/Tokyo
我希望
Asia/Tokyo
的偏移量基于UTC,而不是基于我当前的时区(美国/纽约)@JoachimSauer所以你说我只能将本地时区的utcoffset设置为UTC,但我无法将所有其他(仍受日期支持)时区的偏移量设置为UTC?@Bobby:我不是JavaScript专家,但从
date
API来看,我看不到任何指定(或查询)的支持任何其他时区。是什么让你认为其他时区“仍然受日期支持”?我明白了,是的,有点零碎,但我想它很管用,显然原生日期做得不好。谢谢。我认为这是原生JavaScript中实现这一点的唯一方法,我不知道还有其他方法!请记住,这种方法计算的偏移量取决于一年中的当前时间,并且可能会由于夏令时而发生变化。如果这用于或者UI中的指示,这可能会让用户感到困惑。如果它用于任何其他功能,可能会导致难看的错误。这是一个很好的观点,@JoachimSauer,如果所讨论的时区使用DST,UTC偏移量会有所不同。