MomentJS - 工具方法
现代日期/时间:Moment.js 工具函数
Section titled “现代日期/时间:Moment.js 工具函数”Moment.js 包含一些工具函数,用于协助输入标准化和显式创建无效的 Moment 对象。
标准化单位 (Normalize Units)
Section titled “标准化单位 (Normalize Units)”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()); // trueconsole.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 对象的函数中操作失败。
这些工具函数的使用频率低于核心的操作或格式化方法,但在高级场景或内部库逻辑中具有特定用途。