蓝戒的博客


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

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

本文固定链接: http://www.webzsky.com/?p=1295 | 蓝戒的博客

cywcd
该日志由 cywcd 于2018年10月10日发表在 javascript 分类下, 通告目前不可用,你可以至底部留下评论。
原创文章转载请注明: 时间日期格式化处理js类库:momentJS | 蓝戒的博客
关键字: , ,

时间日期格式化处理js类库:momentJS:等您坐沙发呢!

发表评论


快捷键:Ctrl+Enter
来自的朋友,欢迎您 点击这里 订阅我的博客 o(∩_∩)o~~~
×