一、使用方法
nodeJs、浏览器、requireJs
二、解析
moment、是否合法、Date对象、克隆、数组、日期转字符串、
毫秒、秒、分钟、小时、日期(几号)、星期几、一年中(天、周)、月、季度、年、周数、取值、赋值、最大值、最小值
三、操作
方法链、加法、减法、开始时间、结束时间、本地化、UTC、UTC偏移量、时区偏移量
四、显示
格式化、时差、Unix 时间戳 (秒)、天数(一个月)、数组、JSON、是否之前、是否相同、是否之后、是否之间、是否闰年
一、使用方法
1. Node.js
npm install moment
var moment = require('moment');
moment().format();
2. 浏览器
<script src="moment.js"></script>
<script> moment().format(); </script>
3. Require.js
require.config({
paths: {
"moment": "path/to/moment",
}
});
define(["moment"], function (moment) {
moment().format();
});
二、解析
moment(); //当前时间
moment("1995-12-25") //转换字符串
moment("12-25-1995", "MM-DD-YYYY") //字符串 + 格式
moment("2010 13","YYYY MM").isValid(); // false 校验是否合法
moment(1318781876406) //Unix 偏移量 (毫秒)
var day = new Date(2011, 9, 16) ;
moment(day) //Date 对象
moment(Moment) //克隆
var a = moment.utc([2011, 0, 1, 8]) //数组
new Date(2013, 25, 14).toString(); //日期转换成字符串
毫秒
moment().millisecond() //得到毫秒数
moment().millisecond(Number) //设置毫秒
秒
moment().second(Number);//设置秒
moment().second(); // 得到秒数
moment().seconds(Number);
moment().seconds();
分钟
moment().minute(Number); //设置分钟数
moment().minute(); //得到分钟数
moment().minutes(Number);
moment().minutes();
小时
moment().hour(Number); //设置小时数
moment().hour(); // 得到小时数
moment().hours(Number);
moment().hours();
日期(几号)
moment().date(Number); //设置日期
moment().date(); // 得到当前是几号
moment().dates(Number);
moment().dates();
星期几
moment().day(Number|String); //设置星期
moment().day(); // 得到星期
moment().days(Number|String); //设置星期
moment().days(); // 得到星期
moment().day(-7); // last Sunday (0 - 7)
moment().day(24); // 3 Wednesdays from now (3 + 7 + 7 + 7)
星期 (区域标准)
moment().weekday(Number);
moment().weekday(); // Number
天 (一年中的第几天)
moment().dayOfYear(Number); //设置是这一年的第几天
moment().dayOfYear(); //得到是这一年的第几天
周 (一年中的第几周)
moment().week(Number); //设置是这一年的第几周
moment().week(); // 得到是这一年的第几周
moment().weeks(Number);
moment().weeks();
月
moment().month(Number|String); //设置月份
moment().month(); //得到当前是几月
moment().months(Number|String);
moment().months();
季度
moment().quarter(); // 得到季度
moment().quarter(Number); //设置季度
年
moment().year(Number); //设置年份
moment().year(); // 得到年份
moment().years(Number);
moment().years(); // Number
周数 (一年多少周)
moment().weeksInYear()
//Gets the number of weeks according to locale in the current moment's year.
取值
moment().get('year');
moment().get('month'); // 0 to 11
moment().get('date');
moment().get('hour');
moment().get('minute');
moment().get('second');
moment().get('millisecond');
赋值
moment().set('year', 2013);
moment().set('month', 3); // April
moment().set('date', 1);
moment().set('hour', 13);
moment().set('minute', 20);
moment().set('second', 30);
moment().set('millisecond', 123);
moment().set({'year': 2013, 'month': 3});
最大值
var a = moment().subtract(1, 'day');
var b = moment().add(1, 'day');
moment.max(a, b); // b
最小值
var a = moment().subtract(1, 'day');
var b = moment().add(1, 'day');
moment.min(a, b); // a
三、操作
方法链
moment().add(7,'days').subtract(1,'months').year(2009).hours(0).minutes(0).seconds(0);
加法
moment().add(Number, String);
moment().add(Duration);
moment().add(Object);
moment().add(7, 'days');
moment().add(7, 'days').add(1, 'months'); // with chaining
moment().add({days:7,months:1}); // with object literal
特别的 1:
moment([2010, 0, 31]); // January 31
moment([2010, 0, 31]).add(1, 'months'); // February 28
特别的 2:
var m = moment(new Date(2011, 2, 12, 5, 0, 0)); // the day before DST in the US
m.hours(); // 5
m.add(1, 'days').hours(); // 5
var m = moment(new Date(2011, 2, 12, 5, 0, 0)); // the day before DST in the US
m.hours(); // 5
m.add(24, 'hours').hours(); // 6
减法
moment().subtract(Number, String);
moment().subtract(Duration);
moment().subtract(Object);
moment().subtract(7, 'days');
开始时间 :所给时间的开始点值
moment().startOf(String);
moment().startOf('year');
等价于
moment().month(0).date(1).hours(0).minutes(0).seconds(0).milliseconds(0);
结束时间
moment().endOf(String);
moment().endOf("year"); // set the moment to 12-31 11:59:59.999 pm this year
本地化
moment().local();
1.
var a = moment.utc([2011, 0, 1, 8]);
a.hours(); // 8 UTC
a.local();
a.hours(); // 0 PST
2.
moment.utc([2011, 0, 1, 8]).format('YYYY-MM-DD HH:mm:ss');//2011-01-01 08:00:00
moment.utc([2011, 0, 1, 8]).local().format('YYYY-MM-DD HH:mm:ss');//2011-01-01 16:00:00
等价于
moment.utc([2011, 0, 1, 8]).zone(-8).format('YYYY-MM-DD HH:mm:ss');
moment.utc([2011, 0, 1, 8]).utcOffset(8).format('YYYY-MM-DD HH:mm:ss')
UTC
moment().utc();
var a = moment([2011, 0, 1, 8]);
a.hours(); // 8 PST
a.utc();
a.hours(); // 16 UTC
UTC偏移量
moment().utcOffset();
moment().utcOffset(Number|String);
moment().utcOffset(8); // set hours offset 小于16大于-16,算小时
moment().utcOffset(480); // set minutes offset (8 * 60) 大于16或者小于-16,算分钟
时区偏移量
moment().zone();
moment().zone(Number|String);
moment().zone(480);// set minutes offset (8 * 60) 大于16或者小于-16,算分钟
moment().zone(8); //小于16大于-16,算小时
四、显示
格式化
moment().format();
moment().format(String);
moment().format(); // "2014-09-08T08:02:17-05:00" (ISO 8601)
moment().format('YYYY-MM-DD HH:mm:ss') //2016-05-07 20:47:15
moment().format("dddd, MMMM Do YYYY, h:mm:ss a"); // "Sunday, February 14th 2010, 3:25:50 pm"
moment().format("ddd, hA"); // "Sun, 3PM"
moment('gibberish').format('YYYY MM DD'); // "Invalid date"
moment().format('[today] dddd'); // 'today Sunday'
时差(之前,现在为基准)
moment().fromNow();
moment().fromNow(Boolean);
moment([2007, 0, 29]).fromNow(); // 9 years ago
moment([2007, 0, 29]).fromNow(true); // 9 years
时差(之前)
moment().from(Moment|String|Number|Date|Array);
moment().from(Moment|String|Number|Date|Array, Boolean);
var a = moment([2007, 0, 28]);
var b = moment([2007, 0, 29]);
a.from(b) // "a day ago"
var start = moment([2007, 0, 5]);
var end = moment([2007, 0, 10]);
end.from(start); // "in 5 days"
end.from(start, true); // "5 days"
时差(之后,现在为基准)
moment().toNow();
moment().toNow(Boolean);
moment([2007, 0, 29]).toNow(); // in 9 years
moment([2007, 0, 29]).toNow(true); // 9 years
时差(之后)
moment().to(Moment|String|Number|Date|Array);
moment().to(Moment|String|Number|Date|Array, Boolean);
var a = moment([2007, 0, 28]);
var b = moment([2007, 0, 29]);
a.to(b) // "in a day"
时差(毫秒)
moment().diff(Moment|String|Number|Date|Array);
moment().diff(Moment|String|Number|Date|Array, String);
moment().diff(Moment|String|Number|Date|Array, String, Boolean);
1.一个参数的情况
var a = moment([2007, 0, 29]);
var b = moment([2007, 0, 28]);
a.diff(b) // 86400000
2.第二个参数设置显示
var a = moment([2007, 0, 29]);
var b = moment([2007, 0, 28]);
a.diff(b, 'days') // 1
Unix 时间戳 (秒)
moment().unix();
moment(1318874398806).unix(); // 1318874398
天数 (一个月多少天)
moment().daysInMonth();
moment("2012-02", "YYYY-MM").daysInMonth() // 29
moment("2012-01", "YYYY-MM").daysInMonth() // 31
数组
moment().toArray();
moment().toArray(); // [2013, 1, 4, 14, 40, 16, 154];
JSON
moment().toJSON();
JSON.stringify({ postDate : moment() }); // '{"postDate":"2013-02-04T22:44:30.652Z"}'
moment.fn.toJSON = function() { return this.format(); }
等价
JSON.stringify({
postDate : moment()
}); // '{"postDate":"2013-02-04T14:44:30-08:00"}'
是否之前 (向上原则:比如第二个参数是比较day,则会比较month,year;但如果是年,则不比较month和day)
moment().isBefore(Moment|String|Number|Date|Array);
moment().isBefore(Moment|String|Number|Date|Array, String);
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().isSame(Moment|String|Number|Date|Array);
moment().isSame(Moment|String|Number|Date|Array, String);
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').isSame('2010-12-31', 'year'); // true
moment('2010-10-20').isSame('2011-01-01', 'year'); // false
注意:
moment('2010-01-01').isSame('2011-01-01', 'month'); // false, different year
moment('2010-01-01').isSame('2010-02-01', 'day'); // false,
是否之后(向上原则)
moment().isAfter(Moment|String|Number|Date|Array);
moment().isAfter(Moment|String|Number|Date|Array, String);
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().isBetween(moment-like, moment-like);
moment().isBetween(moment-like, moment-like, String);
// where moment-like is Moment|String|Number|Date|Array
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();
moment([2000]).isLeapYear() // true
moment([2001]).isLeapYear() // false
moment([2100]).isLeapYear() // false