Javascript从毫秒转换时客户端/服务器之间的日期解析错误

时间:2015-08-13 08:50:10

标签: javascript date parsing milliseconds

我遇到了从数据库返回的特定日期(以毫秒为单位)在javascript中生成Date的问题。数据库中的数据采用DateTime格式2015-08-10 00:00:00.000。这是以毫秒为单位返回给客户端的。服务器在客户端提前1小时的时区服务器上运行。

服务器上的日期(以毫秒为单位)为“1439157600000”。

在本地运行的服务器上,它以UTC格式丢失一天,但在标准时间内没问题。

在远程客户端上,UTC镜像服务器时间,但标准时间也是如此。因此,相对于服务器上的标准时间,标准时间现在超出-1天。

然而,在'1420100000000'上运行相同的转换,Everything正常工作。

对于'1439157600000',我们得到了。

本地: 错误:Sun,2015年8月9日22:00:00 GMT - UTC 错误:2015年8月10日星期一00:00:00 GMT + 0200

远程: 错误:Sun,2015年8月9日22:00:00 GMT - UTC 错误:Sun Aug 09 2015 23:00:00 GMT + 0100(GMT标准时间)

对于'1420100000000'我们得到。

本地: 好的:星期四,01 Jan 2015 08:13:20 GMT - UTC 好的:2015年1月1日星期四09:13:20 GMT + 0100

远程: 好的:星期四,01 Jan 2015 08:13:20 GMT - UTC 好的:2015年1月1日星期四08:13:20 GMT + 0000(GMT日光时间)

我觉得这个问题与服务器上设置为00:00:00的时间有关,然后在客户端转换时花了一个小时,在午夜前一小时和前一天花费时间。

这就是我去UTC的原因,但UTC的日期仍然需要1小时的时间。在数据库中它们是2015-08-10< - 8月10日而不是8月9日。在服务器/客户端上,UTC日期将在8月9日回来。为什么服务器会丢失一天,是否有办法解决问题这个?我看到了基本的javascript测试工具和我所有的jtables的相同问题。

这是我的线束代码: -

<script>
window.onload = function(){

    var dt_error = '1439157600000'; 
    var dt_ok = '1420100000000';        

    var pIntDateError = parseInt(dt_error,10);
    var pIntDateOk = parseInt(dt_ok,10);

    var dateUTC_error = new Date(pIntDateError).toUTCString();
    var dateUTC_ok = new Date(pIntDateOk).toUTCString();

    var date_error = new Date(pIntDateError);
    var date_ok = new Date(pIntDateOk);

    document.write('<div>Error: '+dateUTC_error+' - UTC</div>');
    document.write('<div>Error: '+date_error+'</div><br/>');
    document.write('<div>Ok: '+dateUTC_ok+' - UTC</div>');      
    document.write('<div>Ok: '+date_ok+'</div>');

    }
</script>

再次感谢您的时间!

0 个答案:

没有答案