Skip to content

MomentJS - 工具方法

现代日期/时间:Moment.js 工具函数

Section titled “现代日期/时间:Moment.js 工具函数”

Moment.js 包含一些工具函数,用于协助输入标准化和显式创建无效的 Moment 对象。

moment.normalizeUnits(String): 此工具函数将时间单位的别名和复数形式转换为 Moment.js 内部使用的规范单位名称。

它主要由 Moment.js 自身在解析 add、subtract、startOf 等方法的输入时内部使用,但您也可以直接调用它。

console.log(moment.normalizeUnits('Years')); // 输出: 'year'
console.log(moment.normalizeUnits('y')); // 输出: 'year'
console.log(moment.normalizeUnits('Months')); // 输出: 'month'
console.log(moment.normalizeUnits('M')); // 输出: 'month'
console.log(moment.normalizeUnits('Days')); // 输出: 'day'
console.log(moment.normalizeUnits('d')); // 输出: 'day'
console.log(moment.normalizeUnits('Minutes')); // 输出: 'minute'
console.log(moment.normalizeUnits('m')); // 输出: 'minute'

如果您正在构建接受灵活单位字符串并需要对其进行标准化,然后将其传递给 Moment.js 方法的函数,这可能会有所帮助。

创建无效 Moment 对象 (Create Invalid Moment)

Section titled “创建无效 Moment 对象 (Create Invalid Moment)”

moment.invalid(Object): 创建一个显式无效的 Moment 对象。这在需要从函数返回 Moment 对象,但同时需要表明操作失败或结果日期无效的场景中非常有用。

可选的对象参数允许设置无效 Moment 对象的解析标志(parsing flags),主要是 parsingFlags.userInvalidated = true。

function calculateFutureDate(input, daysToAdd) {
const startMoment = moment(input);
if (!startMoment.isValid() || typeof daysToAdd !== 'number' || daysToAdd <= 0) {
// 如果输入无效,返回一个无效的 Moment 对象
return moment.invalid();
}
return startMoment.add(daysToAdd, 'days');
}
const validResult = calculateFutureDate('2023-10-26', 5);
console.log('有效结果是否有效:', validResult.isValid()); // true
console.log('有效结果:', validResult.format('YYYY-MM-DD')); // 2023-10-31
const invalidResult = calculateFutureDate('Some Bad Date', 5);
console.log('无效结果是否有效:', invalidResult.isValid()); // false
const invalidResultFlags = invalidResult.parsingFlags();
console.log('无效结果是否由用户标记为无效:', invalidResultFlags.userInvalidated); // true

使用 moment.invalid() 提供了一种一致的方式来表明在预期返回 Moment 对象的函数中操作失败。

这些工具函数的使用频率低于核心的操作或格式化方法,但在高级场景或内部库逻辑中具有特定用途。

查阅文档:https://momentjs.com/docs/#/utilities/