gpt4 book ai didi

javascript - toISOString() 更改日期时间值

转载 作者:数据小太阳 更新时间:2023-10-29 05:02:02 29 4
gpt4 key购买 nike

我有对象数组。数组中的每个对象都有日期属性。我尝试从数组中获取最大(最后)日期。

这是数组:

var sensorsData = [{
Id: 1,
MeasureDate: "2017-08-20T09:52:32"
}, {
Id: 2,
MeasureDate: "2017-08-20T09:54:35"
}, {
Id: 3,
MeasureDate: "2017-08-20T09:56:13"
}];

这是从上面的数组中获取最大日期的函数:

function updateLatestDate(sensorsData) {
return new Date(Math.max.apply(null, sensorsData.map(function(e) {
return new Date(e.MeasureDate);
}))).toISOString();
}

我从 updateLatestDate 函数得到的结果是:

2017-08-20T06:56:13.000Z

但这很奇怪,因为正如您所看到的,sensorsData 对象中没有一个属性没有从 updateLatestDate 函数返回的日期。

这里是 FIDDLER .

知道为什么 updateLatestDate 函数返回错误结果吗?

最佳答案

当您使用 new Date(str) 创建日期时,它会创建一个带有时区的日期对象。 toISOString() 使其 UTC 偏移量为零,如后缀“Z”所示。

解决方法如下:

var date = new Date(e.MeasureDate)
return new Date(date.getTime() - date.getTimezoneOffset() * 60000)

更新 fiddler :https://jsfiddle.net/xf5jmLL6/7

getTimezoneOffset 返回分钟数,new Date 预计自 1970 年 1 月 1 日 00:00:00 UTC 以来的毫秒数,因此乘以 60000 可提供所需的调整。

关于javascript - toISOString() 更改日期时间值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45779894/

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