如何从Javascript中的JSON查找PDT时区中的DateTime值的最新/最大/最大

问题描述 投票:0回答:1

我正在从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值,然后选择...

javascript json validation datetime timezone
1个回答
0
投票
Maybe u use order by pdtDateTime property at your backend api? Or use
© www.soinside.com 2019 - 2024. All rights reserved.