我们将数据库中的日期存储为日期与“1970年1月1日”之间的差异,以分钟为单位。
以下是同一台机器的结果:
--TSQL (MS Sql Server 2008R2)
SELECT DATEADD(minute, 22572765, '1-Jan-1970'); -- gets 1-Dec-2012 12:45:00.000
//JS (Chrome) - assume minDate = 1-Jan-1970
new Date(minDate.getTime() + (22572765 * 60 * 1000)) -- gets me 1-Jan-2013 12:45:00
解决这种差异的最佳方法是什么?
答案 0 :(得分:2)
听起来我的minDate
错了,因为:
new Date((new Date(1970, 0, 1)).getTime() + (22572765 * 60 * 1000))
...给我1-Dec-2012 12:45:00.000 GMT。
在JavaScript中,month
值从零开始,因此,如果您使用minDate
构建new Date(1970, 1, 1)
,那么这就是您出月的原因。
另请注意,除非您使用UTC
变体(getUTCYear
等),否则JavaScript日期会为您提供输出日期的本地时区版本(除了minDate
之外,构建日期的方式是正确的,它只是在输出上你需要小心)。