我正在从API中获取以下格式的多个DateTime值,然后,我应该比较那些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时区,然后选择最大日期以保持正确的时区。
我在下面的代码段中添加了这段代码,该代码适用于纯日期,但返回错误的日期值。
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;
};
我得到的最大日期:04/29/19(这是错误的)
但是当我尝试使用moment.tz将它们转换为PDT时区时,下面的代码不起作用,并且我没有获得最新的/最大的/最大的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; };
我还尝试使用Moment将DateTime值转换为Unix时间戳,如下所示,但是随后我得到3个日期,而不是一个最新的DateTime值。
const dateTimeValue =moment(moment.tz(jsonArr.pdtDateTime, 'America/Los_Angeles').format(constants.YYYY-MM-DD)).unix();
这里是我收到的timeZone是'America / Los_Angeles'。在所有时区都可以使用,我已经使用了PDT转换/ Unix转换,但是没有用。
有人可以帮助我通过PDT时区转换获取最新/最大/最大的DateTime值吗?
我正在从API中获取以下格式的多个DateTime值,然后,我应该比较那些DateTime值,只需要选择最新的/最大的/最大的DateTime值,然后选择...
Maybe u use order by pdtDateTime property at your backend api? Or use