从db解析日期时javascript中的时间异常

问题描述 投票:0回答:2

我在db中保存我的日期并在fontend中使用datepicker,它显示的是我选择的相同日期,我有两台远程机器,我在所有机器上运行相同的代码,每台机器都不同日期值在db中。例如:如果我选择日期03/01/2019(mm / dd / yyyy)。然后日期保存为:

2019-02-28 18:30:00.0000000 +00:00  = query created from Indian machine 
2019-03-01 00:00:00.0000000 +00:00  = query created from 2nd country machine
2019-02-28 22:00:00.0000000 +00:00   = query created from 3rd country machine

我如何获得所选日期,即:03/01/2019

javascript database date time remote-server
2个回答
0
投票

您应该考虑以UTC格式存储日期时间,以便将其转换回用户时区。如果您只对存储日期感兴趣,则无需将其转换为UTC并仅存储日期,而不是时间。我建议你到read this article了解你的要求,并使用适合你的解决方案。


0
投票

这是一个棘手且不可避免的问题!正如你所说,你已经遇到了麻烦,因为时区已经悄然进入。日期应始终在相关日期开始时以午夜时间的形式存储,并且你现在唯一可以到达的地方是到最近的午夜。一天有86,400,000毫秒。在javascript中,围绕你的日期这样...

var ticksAsDays = new Date('2019-02-28 22:00:00.0000000 +00:00').getTime() / 86400000;
var midnightUTC = Math.round(ticksAsDays) * 86400000;
var asADateObject = new Date(midnightUTC);

展望未来,如果您只处理一个没有时间或时区概念的日期,那么您需要特别注意,您的日期是午夜UTC时刻。更多信息here

© www.soinside.com 2019 - 2024. All rights reserved.