使用JavaScript获取UTC + 1次

问题描述

[-1,..,i - 1,i + 1,n - 1]

这是我要使用的代码,因此,当我单击按钮时,它将文本设置为UTC时间-使用UTC可以正常工作,但是我想将其设置为UTC + 1,但找不到解决方法。>

当我尝试timeZone:'UTC + 1'时,我看到一条错误消息:RangeError:指定了无效的时区:UTC + 1

解决方法

您应该在选项的timeZone字段中指定时区名称,例如timeZone: 'Australia/Sydney'timeZone: 'EST';并且utc+1是无效的时区名称。在mdn Intl/DateTimeFormat中阅读更多内容;您可以像这样使用城市名称和时区:

const options = { timeZone: 'Europe/London',timeZoneName: 'short'};
const today = new Date();
console.log(today.toLocaleTimeString("en-GB",options))

,

ECMAScript语言规范(ECMA-262 section 20.4.4.40)规定,Date.prototype.toLocaleTimeString()函数的options参数必须按照ECMA-402 中的规定实现。 (ECMAScript国际化API规范)。

根据ECMA-402,如果timeZone选项符合section 6.4(“时区名称”)的规定,则该选项有效,

ECMAScript […]国际化API规范使用IANA时区数据库的区域和链接名称来标识时区。它们的规范形式是IANA时区数据库中使用的框体中相应的时区名称。

这就是为什么在使用UTC(这是IANA Time Zone Database中指向Etc/UTC的链接)时代码可以工作的原因,但是在使用UTC+1时却出错了不是有效的IANA时区。

相反,您应该使用代表相同的UTC+01:00 offset的值,并遵守所需的夏令时调整。例如,您可以使用Europe/ParisEurope/Belgrade

const options = { timeZone: 'Europe/Paris',timeZoneName: 'short'};
const today = new Date();
$w("#pikoTimer").text = today.toLocaleTimeString("en-GB",options);

有关方便的在线参考,请参见List of tz database time zones