我遇到了从数据库返回的特定日期(以毫秒为单位)在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>
再次感谢您的时间!
溴