gpt4 book ai didi

javascript - 在nodejs中将字符串转换为日期时间时moment js中的意外行为

转载 作者:行者123 更新时间:2023-12-01 01:59:21 25 4
gpt4 key购买 nike

我想将'03/08/2017 01:00:01'转换为node.js中的datetime对象,以便我可以获取日期中的特定日期和月份。例如:对于上面的示例,月份是 08,日期是 03。

请引用下面的代码片段,它给出了下面的结果。

const myDate = moment('03/08/2017  01:00:01 '.trim(),  ['DD/MM/YYYY  hh:mm:ss'], true).utcOffset(0).toDate();
console.log(myDate); //result 2017-08-02T19:30:01.000Z
console.log(myDate.getUTCFullYear()); //result 2017
console.log(myDate.getUTCMonth()); //result 7
console.log(myDate.getUTCDay()); //result 4

此外,我尝试了下面的代码片段。在这里我无法使用 .toDate() 函数将其转换为日期时间对象。

let date = moment.parseZone(myDate).format('YYYY-MM-DD hh:mm:ss');
console.log(date); // result 2017-08-03 01:00:01

这里给出了正确的日期,但我无法从中提取月份。

let date_ = moment(new Date(date), 'DD/MM/YYYY HH:mm:ss').format('LLL');
console.log(date_); // result August 3, 2017 1:00 AM

下面的代码片段也给出了第一个结果。我在一个文件中执行了所有这些行

let _date = moment(new Date(date)).utc().toDate();
console.log(_date);// result 2017-08-02T19:30:01.000Z
console.log(_date.getUTCFullYear()); //result 2017
console.log(_date.getUTCMonth()); //result 7
console.log(_date.getUTCDay()); //result 3

最佳答案

作为documentation状态:

By default, moment parses and displays in local time.

If you want to parse or display a moment in UTC, you can use moment.utc() instead of moment().

因此一种可能的方法是在 UTC 中工作并执行以下操作:

const myDate2 = moment.utc('03/08/2017  01:00:01',  ['DD/MM/YYYY  hh:mm:ss'], true).toDate();
console.log(myDate2.getUTCDate());
console.log(myDate2.getUTCMonth() + 1);
console.log(myDate2.getUTCHours());

请注意,为了获取日期数字,必须调用 getUTCDate,即 getUTCDay/getDay返回星期几。此外,getMonth/getUTCMonth 返回的月份数字在 0-11 范围内,因此必须将结果加一。

或者,可以在本地日期工作并执行以下操作:

const myDate1 = moment('03/08/2017  01:00:01',  ['DD/MM/YYYY  hh:mm:ss'], true).toDate();
console.log(myDate1.getDate());
console.log(myDate1.getMonth() + 1);
console.log(myDate1.getHours());

关于javascript - 在nodejs中将字符串转换为日期时间时moment js中的意外行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50744134/

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