如何修复MS SQL Server 2008R2 / 2012和Javascript之间的日期差异

时间:2013-12-13 22:01:04

标签: javascript sql-server-2008 date sql-server-2012

我们将数据库中的日期存储为日期与“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

解决这种差异的最佳方法是什么?

1 个答案:

答案 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之外,构建日期的方式是正确的,它只是在输出上你需要小心)。