Moment.js Настройка разбора AM/PM

Опубликовано: 24 Февраля, 2023

Разбор AM/PM — это процесс анализа строки для проверки на AM или PM. Это означает, что мы пытаемся выяснить, является ли заданное время в строковом формате AM или PM. Есть два способа сделать это. Один из них заключается в настройке метода updateLocale(), а другой — в анализе AM/PM непосредственно из строки. Давайте разберемся в каждом из них.

Настройка метода updateLocale()

Синтаксис:

moment.updateLocale("en", {
    meridiemParse : RegExp
    isPM : Function
});

Как мы видим, есть 2 способа разобрать AM/PM из строки, настроив метод updateLocale().

  • meridiemParse: принимает регулярное выражение, чтобы проверить, удовлетворяет ли оно заданной строке
  • isPM: функция обратного вызова для проверки наличия PM в строке.

Функция isPM: Функция isPM используется для проверки того, является ли заданное время временем PM или нет. Он возвращает логическое значение. Например, функция isPM() должна возвращать значение true, если введенная строка уже после 12 часов дня. мы используем isPM, чтобы проверить, находится ли текущее время в «pm» или нет.

moment.updateLocale("en", {
    isPM : function (input) {
        return ((input + "").toLowerCase()[0] === "p");
    }
});

meridiemParse: в этом примере мы используем свойство meridiemParse, которое принимает регулярное выражение для проверки строки на наличие AM/PM.

// Specifying what string should be parsed
// as input using meridiemParse property
moment.updateLocale("en", {
     meridiemParse : /[ap].?m?.?/i 
});

Пример 1: В этом примере мы устанавливаем логику синтаксического анализа AM/PM для «fr», то есть французского языкового стандарта, а затем мы проверяем функцию isPM с помощью образца строки.

Javascript




var localeData = moment.updateLocale("fr", {
    meridiemParse: /PD|MD/,
    isPM: function (input) {
        return input.charAt(0) === "M";
    }
});
var m = localeData.isPM("MD");

Выход:

Meredian : true

Разбор AM/PM непосредственно из строки: мы можем извлечь даты, используя «A» или «a» в строке формата moment(), чтобы интерпретировать их как момент, а затем в format(), чтобы отобразить их в выводе.

Пример 2: Допустим, у нас есть следующая строка.

Mon 03-Jul-2017, 11:00 AM

Теперь, чтобы извлечь из этого AM/PM, мы можем использовать следующий код. Нам просто нужно добавить букву «A» (для AM/PM) или букву «a» (для am/pm). Здесь мы добавили «А» во второй параметр момента () и в формате ().

Javascript




const moment = require("moment");
console.log(
    moment("Mon 03-Jul-2017, 11:00 AM",
    "ddd DD-MMM-YYYY, hh:mm A")
        .format("hh:mm A")
);

Выход:

11:00 AM

Пример 3: Допустим, у нас есть следующая строка

Tue 04-Jul-2017, 11:08 PM

Теперь, чтобы извлечь из этого AM/PM, мы можем использовать следующий код. Нам просто нужно добавить букву «а» во второй параметр момента () и для формата () в конце, чтобы получить обозначения am / pm.

Javascript




console.log(
    moment("Mon 03-Jul-2017, 11:00 AM",
    "ddd DD-MMM-YYYY, hh:mm a")
        .format("hh:mm a")
);

Выход:

11:08 pm

Ссылка: https://momentjs.com/docs/#/customization/am-pm-parsing/