Как установить am / pm в javascript - PullRequest
0 голосов
/ 12 февраля 2020

Я использую new Date () , чтобы создать настройку времени, а также я использую функцию для форматирования времени в am / pm:

const formatTimeAMPM = (date, midnight = { am: "AM", pm: "PM" }) => {
  var hours = date.getHours();
  var minutes = date.getMinutes();
  var ampm = hours >= 12 ? ` ${midnight.am}` : ` ${midnight.pm}`;
  hours = hours % 12;
  hours = hours ? hours : 12; // the hour '0' should be '12'
  minutes = minutes < 10 ? "0" + minutes : minutes;
  hours = hours < 10 ? "0" + hours : hours;
  var strTime = hours + ":" + minutes + " " + ampm;
  return strTime;
};

let startDate = new Date(Date.now());
console.log('before change :',formatTimeAMPM(startDate));
startDate.setHours(8, 30, 0, 0);
console.log('after change :',formatTimeAMPM(startDate));

Если вы запустите сниппет, вы увидите журналы консоли в 20:30. Может кто-нибудь сказать мне, как установить am для него, когда я изменяю час startDate?

1 Ответ

1 голос
/ 12 февраля 2020

Ваш чек am / pm обратный:

var ampm = hours >= 12 ? ` ${midnight.am}` : ` ${midnight.pm}`;

Если час> = 12, это должен быть PM, а не AM, поэтому это должно быть:

var ampm = hours >= 12 ? ` ${midnight.pm}` : ` ${midnight.am}`;

Сейчас если вы запустите его, он покажет 8:30 AM, а если вы установите час 20, он покажет 8:30 PM

Это исправит вашу текущую проблему, но было бы лучше использовать существующую библиотеку для форматирование даты, поскольку это может осложниться, особенно с i18n. Есть пара популярных, таких как date-fns и moment. js, которые сделают тяжелую работу за вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...