如何在JavaScript中获取特定时间的日期

3
我正在尝试获取当前月份的第一天和最后一天的日期和时间,然后必须将其转换为 ISOString。 我尝试了下面的代码,但当我转换为 ISO 时,它会减少1天,之后删除后,日期就正确了。
我需要获取本月的第一天和最后一天的日期和时间。
这是我想要的内容:
  • 开始日期时间2022-12-01T00:00:00.000Z
  • 结束日期时间2022-12-31T23:59:59.000Z
这是我的代码:
var date = new Date();
var firstDay = new Date(date.getFullYear(), date.getMonth(), 1);
var lastDay = new Date(date.getFullYear(), date.getMonth() + 1, 0);
        
console.log(firstDay.toISOString())
console.log(lastDay.toISOString())

console.log(firstDay)
console.log(lastDay)

结果:

// ISO string:
2022-11-30T18:30:00.000Z
2022-12-30T18:30:00.000Z
// without ISO string:
VM4876:4 Thu Dec 01 2022 00:00:00 GMT+0530 (India Standard Time)
VM4876:5 Sat Dec 31 2022 00:00:00 GMT+0530 (India Standard Time)

问题在于在 Date 构造函数中从本地转换到 UTC (在 toISOString 方法中)。"2022-11-30T18:30:00.000Z" 和 "Thu Dec 01 2022 00:00:00 GMT+0530" 表示的是同一时刻。 - RobG
2个回答

2

您可以使用Date.UTC()来帮助您在指定的UTC日期时间构建一个日期实例:

var firstDay = new Date(Date.UTC(y, m, 1));
var lastDay = new Date(Date.UTC(y, m + 1, 0, 23, 59, 59, 0));

你的日期实例现在将记录预期的UTC时间:

console.log(firstDay.toISOString())
console.log(lastDay.toISOString())

2022-12-01T00:00:00.000Z
2022-12-31T23:59:59.000Z

1
@RobG 谢谢,已更新为使用更精确的语言。 - Sly_cardinal

0

这个回答似乎没有解决提问者的问题,即UTC时间戳和本地时间戳之间的偏移量问题。 - RobG

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接