gpt4 book ai didi

javascript - GMT 后的 Momentjs 日期格式处理 (CEST)

转载 作者:行者123 更新时间:2023-11-28 13:09:34 26 4
gpt4 key购买 nike

您好,我已阅读文档,我只是想确定我得到的日期是否能够正确处理该时间之后的“GMT+0200 (CEST)”。这是我的代码和输出:

var date= moment("Mon Mar 27 2017 18:44:35 GMT+0200 (CEST)", "ddd MMM D YYYY HH:mm:ss 1").format()

console.log(date)
//output:
//2017-03-27T18:44:35+02:00
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>

最佳答案

不,您的格式字符串无法正确处理偏移量。

moment(String)解析函数(注意只有一个参数)接受 ISO 8601 和 RFC 2822 字符串。该函数不使用格式参数,因此无需在任何地方使用1。无论如何,您的输入不符合 RFC 2822,因为月份名称位于月份名称之后。如果您使用 moment(String),您将在控制台中收到弃用警告,如以下代码所示:

var date= moment("Mon Mar 27 2017 18:44:35 GMT+0200 (CEST)").format();
console.log(date);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>

之前代码的结果在浏览器之间不一致,如 docs状态:

Warning: Browser support for parsing strings is inconsistent. Because there is no specification on which formats should be supported, what works in some browsers will not work in other browsers.

<小时/>

正如我之前在评论中建议的,您可以使用 moment String + Format使用 ZZ 标记的解析函数(与 UTC 的偏移量为 +-HH:mm+-HHmmZ ),以便考虑 UTC 偏移。

根据您的情况,您可以组合 moment.utc (ZZ/Z token )与 local()正确解析您输入的函数:

var date= moment.utc("Mon Mar 27 2017 18:44:35 GMT+0200 (CEST)", "ddd MMM D YYYY HH:mm:ss ZZ");
// Local date, but considering input offset
console.log(date.local().format());
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>

请注意,我的解决方案与您的解决方案不同,因为它需要帐户偏移字符串,您可以使用 unix()测试它的方法如下所示(如果您是 UTC+2,请更改环境偏移量):

var myDate = moment.utc("Mon Mar 27 2017 18:44:35 GMT+0200 (CEST)", "ddd MMM D YYYY HH:mm:ss ZZ");
console.log(myDate.unix()); // 1490633075

var yourDate= moment("Mon Mar 27 2017 18:44:35 GMT+0200 (CEST)", "ddd MMM D YYYY HH:mm:ss 1");
console.log(yourDate.unix()); // output depends on browser offset

var targetDate = moment.utc("2017-03-27 16:44:35");
console.log(targetDate.unix()); // 1490633075
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>

<小时/>

作为进一步的引用,您可以查看 Time Zone vs Offset指南指出:

The Moment.js core library provides functionality related to adjusting times based on an offset value. It does not provide support for adjusting dates based on time zone data - this is provided by the Moment TimeZone library.

关于javascript - GMT 后的 Momentjs 日期格式处理 (CEST),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43683363/

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