gpt4 book ai didi

javascript - 不一致的 getTimezoneOffset 结果

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:33:26 24 4
gpt4 key购买 nike

documentation似乎建议 getTimezoneOffset() 总是返回当前语言环境的偏移量,而不管日期对象如何。但是我得到的结果不一致,我无法理解。

new Date().getTimezoneOffset()                             // -120
new Date("2015-03-10T15:48:05+01:00").getTimezoneOffset() // -60
new Date("2015-03-10T15:48:05-04:00").getTimezoneOffset() // -60

此外,是否有更好的方法从日期时间字符串中获取时区(可能使用 moment.js)?

最佳答案

getTimezoneOffset 返回调用它的 Date 对象表示的特定时刻 的偏移量,使用时区设置执行代码的计算机。

由于许多时区会更改其对 daylight saving time 的偏移量, 不同日期和时间的值不同是完全正常的。当您在 new Date() 上调用它时,您将获得当前 偏移量。

[+/-]HH 中返回的更常见的偏移量相比,getTimezoneOffset 返回的值以 UTC 西分钟表示: mm 格式,是 UTC 的。因此,您提供的时区在 UTC+1 和 UTC+2 之间交替。我的猜测是提供此输出的计算机位于使用欧洲中部时间的区域之一 - 尽管它可能是其他几个区域之一。

此外,当您将偏移量作为 ISO8601 格式字符串的一部分传递时,确实会考虑该偏移量 - 但仅在解析期间。应用偏移量,Date 对象在内部保留 UTC 时间戳。然后它会忘记您提供的偏移量。在输出时,一些函数将明确使用 UTC,但大多数函数将在发出结果之前转换为本地时区。

您还询问了如何使用 moment.js 获取日期时间字符串的偏移量.是的,这很简单:

// Create a moment object.
// Use the parseZone function to retain the zone provided.
var m = moment.parseZone('2015-03-10T15:48:05-04:00');

// get the offset in minutes EAST of UTC (opposite of getTimezoneOffset)
var offset = m.utcOffset(); // -240

// alternatively, get it as a string in [+/-]HH:mm format
var offsetString = m.format("Z"); // "-04:00"

关于javascript - 不一致的 getTimezoneOffset 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30777230/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com