在我的本地节点环境中使用以下代码将日期字符串'06/06/2022'转换为日期对象时...
new Date('06/06/2022')
生成的日期对象是'2023-06- 05 T23:00:00.000Z'。日子变了。
我知道我可以使用.toLocaleDateString()将其转换回来。但我需要日期对象本身。
如何获取区域设置日期对象,而不是区域设置日期字符串?
在我的本地节点环境中使用以下代码将日期字符串'06/06/2022'转换为日期对象时...
new Date('06/06/2022')
生成的日期对象是'2023-06- 05 T23:00:00.000Z'。日子变了。
我知道我可以使用.toLocaleDateString()将其转换回来。但我需要日期对象本身。
如何获取区域设置日期对象,而不是区域设置日期字符串?
3条答案
按热度按时间ki1q1bka1#
也许你不应该使用date对象,因为它表示一个时区不可知的时间戳,并且唯一地定义了历史中的一个时刻。你面临的问题是节点的显示。
如果你只关注一天,你有这样的选择:
**将日期作为文本值传递:2022年6月6日
如果在不同的时区中使用该值,则这将不准确
如果您只希望节点控制台正确,可以将节点环境的时区修改为:
mbskvtky2#
我已经找到了一个进一步的解决方案,使用怪物俱乐部提供的答案在下面的SO链接。
creating date as UTC
umuewwlo3#
正如MC皇帝提到的,本地机器日期与UTC相差1小时。
我试图在编写服务器测试和在本地运行服务器时将2个日期值等同起来。
为了在短期内解决这个问题,我至少使用了以下解决方案。
使两个日期相等。我已经使用.setUTCHours(0)规范化了UTC值。另一种解决方案可能是简单地在ORM响应中添加一天,以等同于测试。
然而,这两个都只是hack/workaround。我不确定是否有一个完美的解决方案。