JS日期格式给出-1天
我想使用 toIsoString 函数格式化日期,但该函数返回 -1 天如何修复? event.value 格式为 Tue Apr 19 2022 00:00:00 GMT+0400 (亚美尼亚标准时间)
console.log(new Date(event.value).toISOString().slice(0,10))
控制台中的 ,我得到的是这个 2022-04-18
代码> 如何查看结果为 -1 天
startDateChange(event: any): void{
this.firstDayOfMonth = event;
console.log(new Date(event.value).toISOString().slice(0, 10));
}
I want to format my date with toIsoString function but the function returns -1 day how to fix it? the event.value format is Tue Apr 19 2022 00:00:00 GMT+0400 (Armenia Standard Time)
console.log(new Date(event.value).toISOString().slice(0,10))
in the console, I'm getting this one 2022-04-18
how you can see the result was -1 day
startDateChange(event: any): void{
this.firstDayOfMonth = event;
console.log(new Date(event.value).toISOString().slice(0, 10));
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这是因为您的时区设置。当您在时区使用
+0400
时,toISOString
始终返回+0000
。这实际上减少了 4 个小时,相当于前一天的 20:00。您可以尝试通过向日期添加 Z 将时区偏移设置为 0 来解决此问题,如第二个示例所示。
第三个示例是一种安全的方法,但如果需要,您需要添加前缀 0。
另一种选择是使用像 Moment.js 这样的日期库,尽管 moment 已被弃用(我不确定最好的选择是什么,这取决于你)。
This is because of your timezone settings. The
toISOString
is always returning+0000
while you work with+0400
in your timezone. This essentially withdraws 4 hours resulting in the day before, 20:00 hours.You could try to fix this by setting the timezone offset to 0 by adding a Z to the date as shown in the second example.
The third example is a safe way to do it but you need to prefix the 0 if you need that.
Another alternative would be to use a date-library like Moment.js, although moment is deprecated (I don't know for sure what the best alternative would be, that's up to you).
您可以使用 https://day.js.org/
代码:
You can use https://day.js.org/
Code:
就我而言,我通过使用 Dayjs 的时区插件解决了这个问题。如果您使用
dayjs
,那是因为时区的原因。我用这条线解决了这个问题。In my case, I solved the issue by using the timezone plugin from Dayjs. If you use
dayjs
, it's because of the timezone. I solved this with this line.