Как проверить, округлено ли время до: 00 или: 30 или нет в js? - PullRequest
0 голосов
/ 13 января 2020

Допустимое время должно быть примерно равно 00 или 30.

9:00 AM

Не похоже:

12:34 AM

Я могу думать о регулярном выражении. Есть ли другой путь ? Я могу использовать moment.js. Есть предложения?

Ответы [ 3 ]

1 голос
/ 13 января 2020

Вы можете использовать следующее регулярное выражение для проверки вашей строки:

/^([0-1]?[0-9]|2[0-3]):[0|3][0]\s[A|P]M$/

Образец

const r = /^([0-1]?[0-9]|2[0-3]):[0|3][0]\s[A|P]M$/;

['9:00 AM',
  '12:30 PM',
  '3:30 PM',
  '5:00 PM',
  '12:30 PM',
  '12:34 AM',
  '3:21 PM',
  '4:56 AM'
].forEach(a => console.log(a, r.test(a)));

0 голосов
/ 13 января 2020

Для каждого такого ввода, как это, вы можете проанализировать его с помощью moment.js и запросить минуты:

let times = [
    '9:00 AM',
    '12:30 PM',
    '3:30 PM',
    '5:00 PM',
    '12:30 PM',
    '12:34 AM',
    '3:21 PM',
    '4:56 AM',
];

times.map(time => {
    let parsedTime = moment(time, 'hh:mm');
    let minutes = parsedTime.minutes();

    if (minutes === 0 || minutes === 30) {
        // do stuff
    }
});
0 голосов
/ 13 января 2020

Используйте moment, вы можете использовать как:

const momentTime = moment(yourTime)
const minute = momentTime.minute()

if (minute === 0 || minute === 30) { // do your things }

Но я думаю, что @shrys ответит с помощью регулярных выражений, может быть, лучше.

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