蓝戒博客

  • 首页
  • 研发说
  • 架构论
  • 效能录
  • AI谈
  • 随笔集
智构苍穹
AI为翼,架构为骨,文化为魂,实践探新境,价值筑长青。
  1. 首页
  2. 研发说
  3. 正文

时间日期格式化处理js类库:momentJS

2018年10月10日 4259点热度 0人点赞 0条评论

momentJS使用及中文API

一、momnetJS使用

1. npm安装

npm install moment --save   # npm

或者官网http://momentjs.com/ 下载js文件script标签引入

2.  momentJS使用示例:


2.1. 格式日期:

moment(data).format("YYYY-MM-DD"); // data为日期的字符串形式
moment().format("YYYY-MM-DD"); // 输出当前日期
moment().format('YYYY年MM月DD日 HH:mm:ss') // 2016年11月11日 22:05:19
moment().format('hh:m:ss') // 10:5:19
moment().format('[YYYY]') // "YYYY"。[] 里的会原样输出。

2.2. 相对时间:

//例:当前2018年
moment("20111031", "YYYYMMDD").fromNow(); // 7 年前
moment("20120620", "YYYYMMDD").fromNow(); // 6 年前
moment().startOf('day').fromNow();        // 15 小时前
moment().endOf('day').fromNow();          // 9 小时内
moment().startOf('hour').fromNow();       // 8 分钟前

2.3. 日历时间

// 例: 当前时间2018年10月10日,3点11分
// subtract向前几天,add向后几天
moment().subtract(10, 'days').calendar(); // 2018年9月30日
moment().subtract(6, 'days').calendar();  // 上周四下午3点11
moment().subtract(3, 'days').calendar();  // 上周日下午3点11
moment().subtract(1, 'days').calendar();  // 昨天下午3点11分
moment().calendar();                      // 今天下午3点11分
moment().add(1, 'days').calendar();       // 明天下午3点11分
moment().add(3, 'days').calendar();       // 本周六下午3点11
moment().add(10, 'days').calendar();      // 2018年10月20日

2.4 . 多语言支持

//例: 当前时间2018年10月10日 3点14分
moment().format('L');    // 2018-10-10
moment().format('l');    // 2018-10-10
moment().format('LL');   // 2018年10月10日
moment().format('ll');   // 2018年10月10日
moment().format('LLL');  // 2018年10月10日下午3点14分
moment().format('lll');  // 2018年10月10日下午3点14分
moment().format('LLLL'); // 2018年10月10日星期三下午3点14分
moment().format('llll'); // 2018年10月10日星期三下午3点14分

2.5. 常用总结:

创建:

moment() // 当前时间
moment("1995-12-25") // 1995-12-25
moment("12-25-1995", "MM-DD-YYYY") // 1995-12-25
moment({ year :2010, month :3, day :5, hour :15, minute :10, second :3, millisecond :123})
moment(Date.now() - 24 * 60 * 60 * 1000) // 昨天
moment(new Date(2011, 9, 16)) // 2011-10-16

格式化:

moment().format('YYYY年MM月DD日 HH:mm:ss') // 2016年11月11日 22:05:19
moment().format('hh:m:ss') // 10:5:19

转化成 Date 对象:

moment().toDate()

设置/获取时间:

moment().second() //获得 秒
moment().second(Number) //设置 秒。0 到 59
moment().minute() //获得 分
moment().minute(Number) //设置 分。0 到 59
// 类似的用法
moment().hour() // 小时
moment().date() // 一个月里的第几天
moment().day() // 星期几
moment().dayOfYear() // 一年里的第几天
moment().week() // 一年里的第几周
moment().month() // 第几个月
moment().quarter() // 一年里的第几个季度
moment().year() // 年
moment().daysInMonth() // 当前月有多少天

操作:

moment().add(7, 'days') // 之后的第7天。第2个参数还可以是 'months', 'years' 等。注意是复数。
moment().add(7, 'd')// 与上面一行代码的运行结果一样。
moment().subtract(1, 'months') // 上个月

moment().startOf('week') // 这周的第一天
moment().startOf('hour') // 等效与 moment().minutes(0).seconds(0).milliseconds(0)。
// 还支持 'year','month' 等

moment().endOf('week')

查询:

// 早于
moment('2010-10-20').isBefore('2010-10-21') // true
moment('2010-10-20').isBefore('2010-12-31', 'year') // false
moment('2010-10-20').isBefore('2011-01-01', 'year') // true

// 是否相等
moment('2010-10-20').isSame('2010-10-20') // true
moment('2010-10-20').isSame('2009-12-31', 'year')  // false
moment('2010-10-20').isSame('2010-01-01', 'year')  // true

// 晚于
moment('2010-10-20').isAfter('2010-10-19') // true
moment('2010-10-20').isAfter('2010-01-01', 'year') // false
moment('2010-10-20').isAfter('2009-12-31', 'year') // true

// 是否在时间范围内
moment('2010-10-20').isBetween('2010-10-19', '2010-10-25') // true
moment('2010-10-20').isBetween('2010-01-01', '2012-01-01', 'year') // false
moment('2010-10-20').isBetween('2009-12-31', '2012-01-01', 'year') // true

moment().isLeapYear() // 是否是闰年

3. momentJS中文文档:

http://momentjs.cn/docs/

4. momentJS中文api

【解析】

Moment.js不会修改本机Date.prototype,而是为Date对象创建一个包装器。 要获取这个包装器对象,只需调用moment()。
如果你想添加自己的功能,可以通过moment.fn进行自定义。

当前时间
var now = moment();

字符串
var day = moment(“1995-12-25”);
还具有验证功能
moment(“not a real date”).isValid();
如果输入的不是真的日期,return false;

字符串+格式
moment(String, String); // 日期字符串+日期格式
例如:moment(“12-25-1995”, “MM-DD-YYYY”);
moment(String, String, String);//日期字符串+日期格式+时区
例如:moment(‘2012 July’, ‘YYYY MMM’, ‘en’);
moment(String, String, Boolean);//日期字符串+日期格式+是否通过验证
例如:
moment(‘It is 2012-05-25’, ‘YYYY-MM-DD’, true).isValid(); // false
moment(‘2012-05-25’, ‘YYYY-MM-DD’, true).isValid(); // true
moment(String, String, String, Boolean);//这个我也没太明白,请懂的朋友,不吝赐教
moment(‘2012-10-14’, ‘YYYY-MM-DD’, ‘fr’, true);

对象
moment({unit: value, …});
moment({ hour:15, minute:10 });
moment({ y :2010, M :3, d :5, h :15, m :10, s :3, ms :123});
moment({ year :2010, month :3, day :5, hour :15, minute :10, second :3, millisecond :123});
moment({ years:2010, months:3, days:5, hours:15, minutes:10, seconds:3, milliseconds:123});
moment({ years:2010, months:3, date:5, hours:15, minutes:10, seconds:3, milliseconds:123});

Unix 偏移量 (毫秒)
moment(Number);
var day = moment(1318781876406);

Unix 时间戳 (秒)
moment.unix(Number)
var day = moment.unix(1318781876);

Date 对象
moment(Date);
var day = new Date(2011, 9, 16);
var dayWrapper = moment(day);

克隆
moment(Moment);

var a = moment([2012]);
var b = moment(a);
a.year(2000);
b.year(); // 2012

var a = moment([2012]);
var b = a.clone();
a.year(2000);
b.year(); // 2012

UTC
moment.utc();
moment.utc(Number);
moment.utc(Number[]);
moment.utc(String);
moment.utc(String, String);
moment.utc(String, String[]);
moment.utc(String, String, String);
moment.utc(Moment);
moment.utc(Date);

时区
moment.parseZone(String);
moment.parseZone(“2013-01-01T00:00:00-13:00”).zone();

合法性校验
moment().isValid();

默认值
moment(); //此刻的日期和时间
moment(5, “HH”); // today, 5:00:00.000
moment({hour: 5}); // today, 5:00:00.000
moment({hour: 5, minute: 10}); // today, 5:10.00.000
moment({hour: 5, minute: 10, seconds: 20}); // today, 5:10.20.000
moment({hour: 5, minute: 10, seconds: 20, milliseconds: 300});


【取值/赋值】

2017-06-03 09:05:31 虽然是周六,但是自己承若的自己要做到,(爬起来继续写)
momentjs有类似于jquery的取值和赋值的方法,例如;
moment().seconds(30);//时间秒的单位秒赋值30
moment().seconds();//获取时间中秒的单位值

毫秒
moment().millisecond(Number);
moment().millisecond();
moment().milliseconds(Number);
moment().milliseconds();
如果Number>999,会自动向秒级别进行转化

秒
moment().second(Number);
moment().second();
moment().seconds(Number);
moment().seconds(Number);
如果Number>59,会自动向分钟级别进行转化

分钟
moment().minute(Number);
moment().minute();
moment().minutes(Number);
moment().minutes();
如果Number>59,会自动向小时级别进行转化

小时
moment().hour(Number);
moment().hour();
moment().hours(Number);
moment().hours();
如果Number>23,会自动向天级别进行转化

日期
moment().date(Number);
moment().date();
moment().dates(Number);
moment().dates();
Num不能大于当月的实际天数
注意:date指的是每月的天数,day指的是一周的某一天

星期
moment().day(Number|String);
moment().day();
moment().days(Number|String);
moment().days();
参数可以是数字也可以是字符串
如果参数>7,会自动升到周的级别
在2.1.0版本之后, 也支持字符串为周一至周日的英文单词。例如:
moment().day(“Sunday”);
moment().day(“Monday”);

星期(区域标准)
moment().weekday(Number);
moment().weekday();
如果当地市区为一个礼拜的第一天为Monday,则moment().weekday(0)表示Monday.
如果Sunday作为一个礼拜的第一天,则moment().weekday(0)表示Sunday.
// 当Monday是一个礼拜的第一天
moment().weekday(-7); // 上个礼拜的第一天
moment().weekday(7); // 下个礼拜的第一天
// 当Sunday是一个礼拜的第一天
moment().weekday(-7); // 上个礼拜的第一天
moment().weekday(7);//下个礼拜的第一天

星期(ISO)
moment().isoWeekday(Number);
moment().isoWeekday();
isoWeekday表示的是一周的第一天为礼拜一,最后一天为周日,这比较符合国人的一个礼拜习惯;
moment().isoWeekday(1);//周一
moment().isoWeekday(7);//周日

天
moment().dayOfYear(Number);
moment().dayOfYear();
如果Number>366,会自动升为年的级别

周
moment().week(Number);
moment().week();
moment().weeks(Number);
moment().weeks();
不同的地域定义了不同的星期,比如:
在美国,Sunday为一周的第一天,每年的一月1号表示一年第一周的开始;
在法国,Monday为一周的第一天,每年的一月4号表示一年第一周的开始;
而moment().week()是根据地域不同自动设置的;

周 (ISO)
moment().isoWeek(Number);
moment().isoWeek();
moment().isoWeeks(Number);
moment().isoWeeks();

月
moment().month(Number|String);
moment().month();
moment().months(Number|String);
moment().months();
参数可以是数字也可以是字符串
如果参数>7,会自动升到年的级别
在2.1.0版本之后, 也支持字符串为周一至周日的英文单词。例如:
moment().month(“January”);
moment().month(“Feb”);

季度
moment().quarter();
moment().quarter(Number)

年
moment().year(Number);
moment().year();
moment().years(Number);
moment().years();

周 (区域标准)
moment().weekYear(Number);
moment().weekYear();

周数
moment().weeksInYear();

周数 (ISO)
moment().isoWeeksInYear();

取值
moment().get(‘year’);
moment().get(‘month’); // 0到11
moment().get(‘date’);
moment().get(‘hour’);
moment().get(‘minute’);
moment().get(‘second’);
moment().get(‘millisecond’);

赋值
moment().set(‘year’, 2017);
moment().set(‘month’, 3); // 表示4月
moment().set(‘date’, 1);
moment().set(‘hour’, 13);
moment().set(‘minute’, 20);
moment().set(‘second’, 30);
moment().set(‘millisecond’, 123);
moment().set({‘year’: 2017, ‘month’: 3}


【操作】

加法
moment().add(number, string);
moment().add(duration);//个人觉得不常用,所以就不做介绍了
moment().add(jsonobject);

moment().add(7, ‘days’);
moment().add(7, ‘d’);
Key Shorthand
years y
quarters Q
months M
weeks w
days d
hours h
minutes m
seconds s
milliseconds ms
moment().add(7, ‘days’).add(1, ‘months’);
moment().add({days:7,months:1});
moment().add(1, ‘seconds’);

减法
moment().subtract(Number, String);
moment().subtract(Object);
例如:
moment().subtract(7, ‘days’);
moment().subtract(1, ‘seconds’);

开始时间
moment().startOf(String);
比如:
moment().startOf(‘year’); //设置今年一月1号的凌晨0点为开始时间
moment().startOf(‘month’); //
moment().startOf(‘quarter’); //
moment().startOf(‘week’); //
moment().startOf(‘isoWeek’); //
moment().startOf(‘day’); //
moment().startOf(‘hour’); //
moment().startOf(‘minute’); //
moment().startOf(‘second’); //

结束时间
moment().endOf(String);
moment().endOf(“year”);


【显示】

格式化
moment().format();
moment().format(string);

比如:
moment().format(‘yyyy-MM-dd HH:mm:ss’);

参考文档:

http://momentjs.cn/

https://www.jianshu.com/p/94686fd4ae92

https://blog.csdn.net/assassinsshadow/article/details/72842048

标签: format javascript js moment momentJS
最后更新:2025年9月12日

cywcd

我始终相信,技术不仅是解决问题的工具,更是推动思维进化和创造价值的方式。从研发到架构,追求极致效能;在随笔中沉淀思考,于 AI 中对话未来。

打赏 点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

cywcd

我始终相信,技术不仅是解决问题的工具,更是推动思维进化和创造价值的方式。从研发到架构,追求极致效能;在随笔中沉淀思考,于 AI 中对话未来。

最新 热点 随机
最新 热点 随机
npm 安全更新:把握令牌变更与发布体系的迁移参考指南 TresJS:用 Vue 构建现代化交互式 3D 体验 i18n 高效实现方案:前端国际化神器安利一波 前端国际化 i18n 实践:从项目到组件库的全链路方案 GEO(生成引擎优化)完整指南:AI 搜索时代的企业内容新机会 NativeScript:用 JavaScript / TypeScript 构建真正的原生应用
前端开源工具 PinMe:极简部署体验分享大屏适配的核心痛点与一行 autofit 解决方案markdown-exit:现代化的 Markdown 解析工具Lerna + Monorepo:前端多仓库管理的最佳实践CrewAI:基于角色协作的 AI Agent 团队框架浅析2025 最推荐的 uni-app 技术栈:unibest + uView Pro 高效开发全攻略
AngularJs指令全解析 解决window下使用cmd运行node安装报错: npm ERR! code EIO websocket断线重连实践解决方案 信息系统架构的形与魂:理论、方法与前端实践 基于 docx-preview 的 Word 预览组件实现方案分享 从零到一:前端 TypeScript 工具函数库的 Jest 单元测试实战经验分享
最近评论
渔夫 发布于 1 个月前(11月05日) 学到了,感谢博主分享
沙拉小王子 发布于 8 年前(11月30日) 适合vue入门者学习,赞一个
沙拉小王子 发布于 8 年前(11月30日) 适合vue入门者学习,赞一个
cywcd 发布于 9 年前(04月27日) 请参考一下这篇文章http://www.jianshu.com/p/fa4460e75cd8
cywcd 发布于 9 年前(04月27日) 请参考一下这篇文章http://www.jianshu.com/p/fa4460e75cd8

COPYRIGHT © 2025 蓝戒博客_智构苍穹-专注于大前端领域技术生态. ALL RIGHTS RESERVED.

京ICP备12026697号-2