gpt4 book ai didi

Javascript 日期没有时区

转载 作者:行者123 更新时间:2023-11-27 23:10:00 26 4
gpt4 key购买 nike

我进行网络服务调用,数据以 JavaScript 形式返回,其中包含日期。

    "d": [{
"__type": "ServiceValues",
……………………..
"DateOfServiceStart": new Date(1453093200000),
"DateOfServiceEnd": new Date(1463457600000),
"CreatedDateTime": new Date(1453161233940),
"UpdatedDateTime": new Date(1453329075943),
...........
},

但是,当使用相同的方法来显示从服务器接收到的值时,JS 不允许这样做。

收到的 CreatedDateTime 值的服务器日期为“2016-01-18 18:53:53.940”。

我已经寻找了几个相同的解决方案以及 moment.js 。但没有一个起作用。

我希望显示从服务器收到的日期。

这是相同的片段,其中没有任何选项返回从服务器接收的日期。

<html><head><script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.12.0/moment.min.js"></script></head><Body>
<div id="localDate"> </div>
<BR><BR>
<div id="time"> </div>
<script>
var localFormat = 'MM/DD/YYYY';

//SERVER DATE : “2016-01-18 18:53:53.940”

var serverDate = new Date(1453161233940);

var _helsenkiOffset = 2*60*60000;//maybe 3 [h*60*60000 = ms]
var _userOffset = serverDate.getTimezoneOffset()*60000; // [min*60000 = ms]
var _helsenkiTime = new Date(serverDate.getTime()+_helsenkiOffset+_userOffset);

var m = moment(serverDate).format(localFormat);

var mom = moment(1453161233940).format(localFormat);

document.getElementById("localDate").innerHTML += _helsenkiTime + '<BR>';

document.getElementById("localDate").innerHTML += serverDate.toUTCString() + '<BR>';

document.getElementById("localDate").innerHTML += m + '<BR>';

document.getElementById("localDate").innerHTML += mom + '<BR>';

</script>

</body>
</html>

最佳答案

The server date is “2016-01-18 18:53:53.940” for the CreatedDateTime value received.

这可能是不正确的,或者是该服务器的本地时间值,而您的服务器的时间显示为 GMT-05:00。有问题的时间值 (1453161233940) 实际上是 UTC 时间 2016 年 1 月 18 日星期一 23:53:53。所以我看到两种可能性:您的服务器位于美国东部或加拿大,因为这些服务器在一月份位于东部标准时区(-05:00),或者在此过程中的某个地方错误地将时间值调整了五个小时。

您可以使用各种 getUTCXyz 方法从 Date 对象获取 UTC 值(Mon Jan 18 2016 23:53:53 GMT+0000)。然后,如果您想以某种方式调整它的显示,您可以使用各种 setXyzsetUTCXyz 方法(或者,当然,它们的 moment 等价物)。

请务必记住,-05:00 并不总是东部时间。东部时间的服务器在一年中大部分时间为 -05:00(东部标准时间),但在“夏令时”(东部夏令时间)期间为 -04:00。

其寓意是,在存储日期时,您需要仔细考虑时区并以最适合您的应用程序的方式存储日期。一种方法是始终以 UTC 格式存储日期,因为当您想要渲染时,您可以轻松地从 UTC 转换为任何其他时区。另一种方法是始终存储日期及其时区,这就是 SQL Server 的 datetimeoffset 类型的作用。

关于Javascript 日期没有时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36280454/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com