Moment.js 自定义 AM/PM 解析

Moment.js 自定义 AM/PM 解析

AM/PM 解析 是分析字符串以检查是否包含 AM 或 PM 的过程。这意味着我们试图找出给定的字符串形式的时间是否为上午或下午。有两种方法可以实现这一点。一种是通过配置 updateLocale() 方法,另一种是直接从字符串解析 AM/PM。让我们逐个理解它们。

配置 updateLocale() 方法

语法:

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

如我们所见,有两种方法可以通过配置updateLocale()方法来解析字符串中的AM/PM。

  • meridiemParse: 接受一个正则表达式来检查是否满足给定字符串
  • isPM: 一个回调函数,用于检查字符串中是否包含PM。

isPM函数: isPM函数用于检查给定的时间是否为PM时间。它返回一个布尔值。例如-如果输入字符串是12点以后,则isPM()应该返回true。我们使用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: 在这个示例中,我们为’fr’即法语区域设置了上午/下午解析逻辑,然后我们使用样本字符串检查isPM函数。

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: 我们可以通过在moment()的格式字符串中使用‘A’或‘a’来提取日期,将其解释为一个moment,并在format()中显示输出。

示例2: 假设我们有以下字符串。

Mon 03-Jul-2017, 11:00 AM

现在,要从这个中提取出AM/PM,我们可以使用以下代码。我们只需要添加字母‘A’(代表AM/PM)或者字母‘a’(代表am/pm)的标记。在moment()和format()的第二个参数中,我们在末尾附加了‘A’。

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

现在,要从中提取上午/下午,我们可以使用以下代码。我们只需要在moment()的第二个参数中添加字母’a’,并在最后的format()中获取上午/下午的标记。

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/

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程