如何解决将字符串转换为日期会给出错误的日期+1
我在堆栈中几乎没有看到有关日期和时区问题的帖子,但没有任何想法。 我在表中有日期列,并且我将其作为字符串,因此在保存到db之前,我将这些列转换为日期并发送到服务器。
TS:
item.effectiveDate=new Date(item.effectiveDate);
在 Console.log(item.effectiveDate)中,要获取正确的日期,可以说我给出了 2020年9月9日
控制台日志:
effectiveDate: Wed Sep 09 2020 00:00:00 GMT+0530 (India Standard Time)
但是向服务器端发送的日期要短1天:
在数据库中:
EffectiveDate
2020-09-08 18:30:00.000
我期望的是, 2020-09-09 00:00:00.000
解决方法
我在处理日期时遇到了同样的问题,但是以UTC格式解析日期对我来说解决了这个问题。
如下更改您的TS代码:
item.effectiveDate=new Date(Date.parse(item.effectiveDate+"T00:00:00+0000"));
,
通常,数据库将具有UTC日期,但是您可以根据用户时区在UI级别处理转换。您可以使用https://date-fns.org/或https://momentjs.com/在用户界面级别处理转换。
我建议使用标准ISO格式将日期时间从后端传输到前端,以保留时区信息。
例如2020-08-14T10:41:20+05:30
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。