Как игнорировать часовой пояс в новой дате ()?

У меня есть функция JavaScript с именем updateLatestDate, которая получает в качестве параметра массив объектов.

Одним из свойств объекта в массиве является свойство 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.

Но я не хочу, чтобы время менялось по Гринвичу.

Желаемый результат:

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

Любая идея, как я могу игнорировать часовой пояс, когда дата возвращается из функции updateLatestDate?


person Michael    schedule 18.04.2016    source источник
comment
Что вы имеете в виду, когда это выглядит так? В вашем отладчике? В чем видит пользователь?   -  person Walfrat    schedule 18.04.2016
comment
Используйте библиотеку моментов, это лучше всего   -  person Devank    schedule 18.04.2016
comment
@Walfrat да в отладчике. Позже я отправляю значение на сервер   -  person Michael    schedule 18.04.2016
comment
@Devank есть способ решить эту проблему без использования библиотеки?   -  person Michael    schedule 18.04.2016
comment
@Michael Таким образом, ваш ввод будет в субботу, 27 октября 2012 г., 21:10:00 по Гринвичу + 0300, а вывод будет в субботу, 27 октября 2012 г., в 23:40:00.   -  person Devank    schedule 18.04.2016


Ответы (3)


Как указал Фрз Хан, вы можете использовать функцию .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();
    })));
}
person Chris Jaquez    schedule 18.04.2016
comment
Спасибо за ответ @Chris. Просто примечание. Я думаю, вам следует ссылаться на MDN вместо w3schools. Ваше здоровье. - person Simão Garcia; 18.07.2019

Функция Date.toISOString() - это то, что вам нужно, попробуйте это:

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

результат:

"2012-10-27T18:10:00.000Z"
person Frz Khan    schedule 18.04.2016

Если вы используете момент, это будет

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')
person Devank    schedule 18.04.2016