You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Moment.js 2.10.6版本中,是否存在更简便的isPM判断方法?

关于Moment.js 2.10.6中判断AM/PM的问题

嘿,我来帮你理清这个问题:

你的初始判断代码是正确的

首先可以确定,你给出的那段判断AM/PM的代码在Moment.js 2.10.6版本里是完全可行的。在这个版本中,localeData().isPM()方法的设计就是需要传入格式化后的'A'类型字符串(也就是"AM"或"PM")来完成时段判断,所以你的测试逻辑没问题:

// AM 时段判断
var m = moment("2018-05-16 11:59:59 GMT-0600");
m.localeData().isPM(m.format('A')) // 返回 false
// PM 时段判断
var m = moment("2018-05-16 12:00:00 GMT-0600");
m.localeData().isPM(m.format('A')) // 返回 true

实现你想要的简化写法

确实,原生写法有点繁琐,不过Moment.js允许我们通过扩展原型来添加自定义方法,刚好能实现你期望的moment(...).local().isPM()调用方式。因为local()返回的还是Moment实例,我们可以给moment.fn(Moment的原型对象)添加这个方法:

// 给Moment实例扩展isPM方法
moment.fn.isPM = function() {
  // 内部复用你原来的逻辑,只是封装成实例方法
  return this.localeData().isPM(this.format('A'));
};

添加完这段扩展代码后,你就可以像预想的那样简洁调用了:

moment("2018-05-16 11:59:59 GMT-0600").local().isPM() // false
moment("2018-05-16 12:00:00 GMT-0600").local().isPM() // true

需要注意的是,这段扩展代码要保证在你调用isPM()之前执行,比如放在项目的Moment初始化代码里,这样所有Moment实例都能使用这个方法啦。

内容的提问来源于stack exchange,提问作者jbobbins

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 04:09:46