Mic*_*ael 6 javascript timezone datetime
我有对象的数组.数组中的每个对象都有date属性.我试着从数组中得到最大的(最后一个)日期.
这是数组:
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"
}];
Run Code Online (Sandbox Code Playgroud)
而这里是从上面的数组获取最大日期的函数:
function updateLatestDate(sensorsData) {
return new Date(Math.max.apply(null, sensorsData.map(function(e) {
return new Date(e.MeasureDate);
}))).toISOString();
}
Run Code Online (Sandbox Code Playgroud)
我从updateLatestDate
函数得到的结果是:
2017-08-20T06:56:13.000Z
Run Code Online (Sandbox Code Playgroud)
但它很奇怪,因为你可以看到sensorsData对象中没有任何属性没有从updateLatestDate
函数返回的日期.
这是FIDDLER.
知道为什么updateLatestDate函数返回错误的结果吗?
Dan*_*sky 12
使用new Date(str)
它创建日期时,会创建带有时区的日期对象.toISOString()
使其为UTC UTC偏移,由后缀"Z"表示.
这是一个解决方法:
var date = new Date(e.MeasureDate)
return new Date(date.getTime() - date.getTimezoneOffset() * 60000)
Run Code Online (Sandbox Code Playgroud)
更新了提琴手:https://jsfiddle.net/xf5jmLL6/7
getTimezoneOffset
返回分钟数并new Date
预计自1970年1月1日00:00:00 UTC以来的毫秒数,因此乘以60000可提供所需的调整.