Я получаю несколько значений DateTime из API. В приведенном ниже формате я должен сравнить эти значения DateTime и выбрать только последнее / максимальное / максимальное значение DateTime, а затем, наконец, вернуть только этот последний объект массива значений DateTime. .
[
{
"status": "PDT",
"subStatus": "PDT",
"pdtDateTime": "2019-05-07T13:41:43.000Z"
},
{
"status": "PDT",
"subStatus": "PDT",
"pdtDateTime": "2019-05-07T13:43:34.000Z"
},
{
"status": "GMT",
"subStatus": "GMT",
"pdtDateTime": "2019-05-07T12:35:18.000Z"
},
{
"status": "GMT",
"subStatus": "GMT",
"pdtDateTime": "2019-05-07T13:44:04.000Z"
},
{
"status": "CDT",
"subStatus": "CDT",
"pdtDateTime": "2019-04-17T07:52:47.000Z"
},
{
"status": "CDT",
"subStatus": "CDT",
"pdtDateTime": "2019-04-17T07:53:13.000Z"
},
{
"status": "CDT",
"subStatus": "CDT",
"pdtDateTime": "2019-04-29T12:00:38.000Z"
},
{
"status": "PDT",
"subStatus": "PDT",
"pdtDateTime": "2019-05-07T13:40:41.000Z"
},
{
"status": "CDT",
"subStatus": "CDT",
"pdtDateTime": "2019-05-07T12:34:19.000Z"
},
{
"status": "GMT",
"subStatus": "GMT",
"pdtDateTime": "2019-05-07T12:34:29.000Z"
},
{
"status": "PDT",
"subStatus": "PDT",
"pdtDateTime": "2019-04-29T10:53:05.000Z"
}
]
На самом деле, прежде чем сравнивать даты, мне нужно преобразовать эти даты в часовой пояс PDT, а затем выбрать максимальную дату, чтобы поддерживать правильный часовой пояс.
I добавили этот ниже фрагмент кода, который работает с простыми датами, но возвращает неправильное значение даты.
getLatestPDTDateTimeValue = (jsonArr) => {
const eleAlreadyInserted = {};
const resultData = [];
for (let i = jsonArr.length - 1; i >= 0; i -= 1) {
if (jsonArr.status === 'PDT') {
const dateTimeValue = moment(jsonArr.pdtDateTime, "ddd MMM DD YYY").format("DDYYYY");
if (eleAlreadyInserted[dateTimeValue] === undefined) {
eleAlreadyInserted[dateTimeValue] = true;
resultData.unshift(jsonArr[i]);
}
}
}
return resultData;
};
Максимальная дата, которую я получил: 29.04.19 (что неверно)
Но затем, когда я попытался преобразовать их в часовой пояс PDT, используя moment.tz , приведенный ниже код не работает, и я не получаю последнее / максимальное / максимальное значение DateTime, вместо этого я получаю все значения DateTime.
getLatestPDTDateTimeValue = (jsonArr) => {
const eleAlreadyInserted = {};
const resultData = [];
for (let i = jsonArr.length - 1; i >= 0; i -= 1) {
if (jsonArr.status === 'PDT') {
const dateTimeValue = moment.tz(jsonArr.pdtDateTime, 'America/Los_Angeles').format('ddd, MMM Do YYYY @ h:mm A z');
if (eleAlreadyInserted[dateTimeValue] === undefined) {
eleAlreadyInserted[dateTimeValue] = true;
resultData.unshift(jsonArr[i]);
}
}
}
return resultData;
};
Я также попытался преобразовать значение DateTime в Unix метку времени, используя Moment, как показано ниже, но затем я получаю 3 da tes вместо одного последнего значения DateTime.
const dateTimeValue =moment(moment.tz(jsonArr.pdtDateTime, 'America/Los_Angeles').format(constants.YYYY-MM-DD)).unix();
Здесь часовой пояс, который я получаю, - «America / Los_Angeles». Как должно работать во всех часовых поясах. Я использовал преобразование PDT / Unix преобразование, но оно не сработало.
Могут ли некоторые, пожалуйста, помочь мне получить последнее / максимальное / максимальное значение DateTime с преобразованием часового пояса PDT?