如何在新Date()上忽略时区?

时间:2016-04-18 14:35:22

标签: javascript timestamp-with-timezone

我有一个名为updateLatestDate的JavaScript函数,它接收为对象的参数数组。

数组中对象的一个​​属性是日期类型的MeasureDate属性。

函数updateLatestDate返回数组中存在的最新日期。

这是功能:

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

以下是函数接收的参数示例:

[{
    "Address": 54,
    "AlertType": 1,
    "Area": "North",
    "MeasureDate": "2009-11-27T18:10:00",
    "MeasureValue": -1
  },
  {
    "Address": 26,
    "AlertType": 1,
    "Area": "West",
    "MeasureDate": "2010-15-27T15:15:00",
    "MeasureValue": -1
  },
  {
    "Address": 25,
    "AlertType": 1,
    "Area": "North",
    "MeasureDate": "2012-10-27T18:10:00",
    "MeasureValue": -1
  }]

函数updateLatestDate将返回数组中最后一个对象的MeasureDate值。

它看起来像那样:

 var latestDate = Sat Oct 27 2012 21:10:00 GMT+0300 (Jerusalem Daylight Time)

如您所见,返回结果的时间与输入对象的时间不同。时间根据 GMT 更改。

但我不想根据GMT改变时间。

期望的结果是:

 var latestDate = Sat Oct 27 2012 18:10:00 

任何想法如何在updateLatestDate函数返回日期时忽略时区?

3 个答案:

答案 0 :(得分:2)

正如Frz Khan指出的那样,你可以在从函数返回日期时使用。toISOString()函数,但是如果你正在寻找UTC格式,请使用.toUTCString(),它会输出像Mon, 18 Apr 2016 18:09:32 GMT

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

答案 1 :(得分:1)

Date.toISOString()函数是您所需要的 试试这个:

var d = new Date("2012-10-27T18:10:00");
d.toISOString();

结果:

"2012-10-27T18:10:00.000Z"

答案 2 :(得分:-2)

如果你使用的话会是

moment('Sat Oct 27 2012 21:10:00 GMT+0300', 'ddd MMM DD DDDD HH:mm:SS [GMT]ZZ').format('ddd MMM DD YYYY HH:mm:SS')