gpt4 book ai didi

javascript - 我们构建时刻时区的方式有什么区别?

转载 作者:行者123 更新时间:2023-11-30 19:57:00 24 4
gpt4 key购买 nike

moment("2014-06-01T12:00:00Z").tz("America/Los_Angeles") vs moment.tz("2014-06-01T12:00: 00Z", "美国/洛杉矶")

根据 https://momentjs.com/timezone/该示例显示了两者,但没有解释首选哪种方式。

最佳答案

我同意 moment-timezone 示例有点误导,请注意 moment.tz用于使用给定区域解析输入:

The moment.tz constructor takes all the same arguments as the moment constructor, but uses the last argument as a time zone identifier.

同时 tz()是将时刻对象转换到给定的时区。


对于 "2014-06-01T12:00:00Z" 两个 moment("2014-06-01T12:00:00Z").tz("America/Los_Angeles")moment.tz("2014-06-01T12:00:00Z", "America/Los_Angeles") 给出相同的结果,因为输入包含 Z代表 +00:00 偏移量。

请注意,正如 Matt Johnson(momentjs 团队成员和日期/时区专家)在 this comment 中所述:

because the input contains the Z, it will indeed be treated as UTC and converted with just moment.tz(input, zone). It's slightly bad form though, as just dropping the Z will change the behavior

所以我的建议是使用moment.utc解析 UTC 输入,然后使用 tz() 转换为所需的时区.参见 this related question .


这里有几个使用不同方法解析不同输入的例子:

// UTC input
console.log( moment("2014-06-01T12:00:00Z").tz("America/Los_Angeles").format() );
console.log( moment.tz("2014-06-01T12:00:00Z", "America/Los_Angeles").format() );
// No Z in the input (no UTC)
console.log( moment("2014-06-01T12:00:00").tz("America/Los_Angeles").format() );
console.log( moment.tz("2014-06-01T12:00:00", "America/Los_Angeles").format() );

// My suggested way
console.log( moment.utc("2014-06-01T12:00:00Z").tz("America/Los_Angeles").format() );
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.23/moment-timezone-with-data-2012-2022.min.js"></script>

关于javascript - 我们构建时刻时区的方式有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53880174/

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