【问题标题】:Get UTC + 1 time with javascript使用 javascript 获取 UTC + 1 时间
【发布时间】:2020-08-31 09:06:29
【问题描述】:
var options = { timeZone: 'UTC', timeZoneName: 'short'};
const today = new Date();
$w("#pikoTimer").text = today.toLocaleTimeString("en-GB", options);

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

当我尝试 timeZone: 'UTC+1' 它给我一个错误提示: RangeError: Invalid time zone specified: UTC+1

【问题讨论】:

    标签: javascript internationalization datetime-format


    【解决方案1】:

    ECMAScript 语言规范规定(ECMA-262 section 20.4.4.40Date.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 以获取方便的在线参考。

    【讨论】:

      【解决方案2】:

      您应该在选项的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))

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-05-29
        • 2012-04-03
        • 1970-01-01
        • 2012-02-28
        • 2019-08-25
        • 2016-04-01
        • 1970-01-01
        相关资源
        最近更新 更多