Как найти последнее / самое большое / максимальное значение DateTime, которое находится в часовом поясе PDT из JSON в javascript - PullRequest
0 голосов
/ 08 мая 2020

Я получаю несколько значений 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?

...