问题描述
[-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/Paris
或Europe/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。