Преобразование HH: mm в Moment.js

Итак, у меня есть данные времени, например:

10:45 PM
11:35 PM
12:06 AM
01:34 AM

Все эти времена находятся в America/Los_Angeles, и каждый раз, как гарантируется, будет после 09:00 PM сегодня в этот часовой пояс. Так что завтра будут дни, которые пройдут за полночь.

Есть ли элегантный способ преобразования этих времен из текущего формата в объекты moment.js со временем, привязанным к соответствующему дню.

Ответ 1

function getMomentFromTimeString(str) {
  var t = moment(str, 'HH:mm A');
  // Now t is a moment.js object of today date at the time given in str

  if (t.get('hour') < 22) // If it before 9 pm
    t.add('d', 1); // Add 1 day, so that t is tomorrow date at the same time

  return t;
}

Ответ 3

moment('09:00','h:mm a').format('h:mm a');

Ответ 4

Вы можете использовать метод tz():

var date = moment().tz("America/Los_Angeles").startOf('day');
date.hour(22);
date.minutes(45);

Затем преобразуйте его в локальное время:

date.local().toDate();