moment.js使用
简介
-
moment
-
add
-
subtract
-
startOf
-
endOf
-
format
-
diff
-
daysInMonth
-
toArray
-
toObject
-
isBetween
-
isLeapYear
-
isMoment
-
isDate
-
duration
-
asDays
-
moment.duration
-
asDays
-
add
-
startOf
-
isValid
-
‘MM-DD(ddd)’
-
moment(ts.format(‘YYYY-MM-DD’)).unix()
-
moment.unix(firstDate).format(‘YYMMDD’)
Key | Shorthand |
---|---|
years | y |
quarters | Q |
months | M |
weeks | w |
days | d |
hours | h |
minutes | m |
seconds | s |
millseconds | ms |
当前时间
“moment(new Date()) 等同于
var now = moment();`
字符串
var day = moment("1995-12-25");
传入参数为字符串时, 会先以ISO标准找到匹配的格式进行解析,如果没找到匹配的格式, 则会默认使用 new Date(string)
来解析。
moment("1995-12-25").format() // "1995-12-25T00:00:00+08:00"
合法性
// 如果字符串不符合 ISO标准解析格式,会尝试使用 Date.parse()解析, 如果都失败 则返回false
moment("not a real date").isValid(); // false
format语法
Input | Example | Description |
---|---|---|
YYYY | 2014 | 4 or 2 digit year |
YY | 14 | 2 digit year |
Q | 1..4 | Quarter of year. Sets month to first month in quarter. |
M MM | 1..12 | Month number |
MMM MMMM | Jan..December | Month name in locale set by moment.locale() |
D DD | 1..31 | Day of month |
Do | 1st..31st | Day of month with ordinal |
DDD DDDD | 1..365 | Day of year |
X | 1410715640.579 | Unix timestamp |
x | 1410715640579 | Unix ms timestamp |
moment().format()
// "2018-07-11T16:38:18+08:00"
moment().format('YYYY') // "2018"
moment().format('YY') // "18"
moment().format('M') // "7"
moment().format('MM') // "07"
moment().format('MMM') // "Jul"
moment().format('MMMM') //"July"
moment().format('D') // "7"
moment().format('DD') // "07"
moment().format('X') // "1531298699" UNIX时间戳
moment().format('x') // "1531298701354"
moment().format('YYYY-MM-DD HH:mm:ss') // "1970-01-01 14-00-00"
moment().format('YYYY-MM-DD hh:mm:ss') // "1970-01-01 2-00-00"
unix
秒
moment.unix() 返回一个moment对象, unix方法需要传入一个number类型的 秒 值
moment.unix(unixDate) 相当于moment(unixDate, ‘X’)
var day = moment.unix(1318781876.721).format('YYYY MM-DD') // "2011 10-17"
moment.unix(1531298699).format('LLL') // "2018年7月11日下午4点44分"
//以下两个貌似没啥区别
a = moment.unix(1531298699)
a1 = moment.unix(1531298699, 'YYYY-MM-DD')
format
moment().format('L'); // 2018-07-12
moment().format('l'); // 2018-07-12
moment().format('LL'); // 2018年7月12日
moment().format('ll'); // 2018年7月12日
moment().format('LLL'); // 2018年7月12日晚上7点40分
moment().format('lll'); // 2018年7月12日晚上7点40分
moment().format('LLLL'); // 2018年7月12日星期四晚上7点40分
moment().format('llll'); // 2018年7月12日星期四晚上7点40分
通过moment对象获取 unix时间
moment().unix() // 1531298699 UNIX时间戳
moment
moment(“20120620”, “YYYYMMDD”).format()
If you know the format of an input string, you can use that to parse a moment.
moment("12-25-1995", "MM-DD-YYYY"); // 我感觉 和 moment("12-25-1995")没啥差别
以下两个效果等价:
The parser ignores non-alphanumeric characters, so both of the following will return the same thing.
moment(“12-25-1995”, “MM-DD-YYYY”); moment(“12/25/1995”, “MM-DD-YYYY”);
解析
通过当前时间获得moment对象
moment();
通过Unix 时间戳(毫秒)获得moment对象
moment(Number);
moment(1551841019666).valueOf() // 1551841019666
const time = Date.now()
moment(time).toArray() // [2018, 9, 11, 18, 22, 4, 726]
通过Unix 时间戳(秒)获得moment对象
moment.unix(Number)
const time = Date.now()
moment.unix(Math.floor(time / 1000)).toArray() // [2018, 9, 11, 18, 22, 4, 0]
通过moment对象获得Unix 时间戳(毫秒)
moment().valueOf() // 1551839106211
moment().format('x'); // "1551839106211"
通过moment对象获得Unix 时间戳(秒)
moment().unix() // 1551841372
moment().format('X'); // "1551841372"
操作
加法
基于一个时间增加
moment().add(Number, String);
moment().add(Duration);
moment().add(Object);
moment().startOf('d').add(1, 'M') // Sun Nov 11 2018 00:00:00
减法
基于一个时间减少,类比 加法
moment().subtract(Number, String);
moment().subtract(Duration);
moment().subtract(Object);
开始时间
设置开始时间
moment().startOf(String)
moment().startOf('d') // Thu Oct 11 2018 00:00:00
等同:
moment().hours(0).minutes(0).seconds(0).milliseconds(0)
结束时间
设置结束时间
moment().endOf(String)
moment().endOf('d') // Thu Oct 11 2018 23:59:59
等同:
moment().hours(23).minutes(59).seconds(59).milliseconds(999)
显示
格式化
格式化显示
moment().format();
moment().format(String);
moment().format() // "2018-10-11T16:13:15+08:00"
moment().format("YYYY/MM/DD HH:mm:ss") // "2018/10/11 16:10:25"
moment().format("YYYY-MM-DD") // "2018-10-11"
时差
两个时间的时间差
moment().diff(Moment|String|Number|Date|Array);
moment().diff(Moment|String|Number|Date|Array, String);
moment().diff(Moment|String|Number|Date|Array, String, Boolean);
const a = moment(),
b = moment().subtract(1, 'd')
a.diff(b) // 86399999
const c = moment([2018, 1])
const b = moment([2018, 10])
b.diff(a, 'M') // 9
b.diff(a, 'y', true) // 0.75
天数(月)
判断一个月有多少天
moment().daysInMonth();
moment('2018-02', 'YYYY-MM').daysInMonth() // 28
moment('2018-10', 'YYYY-MM').daysInMonth() // 31
数组
将moment 类型 转换 数组
moment().toArray()
moment().toArray() // [2018, 9, 11, 17, 9, 59, 227]
对象
将moment类型 转换 对象
moment().toObject()
moment().toObject()
/** output:
* date: 11
* hours: 17
* milliseconds: 991
* minutes: 12
* months: 9
* seconds: 37
* years: 2018
**/
查询
是否之间
给定时间是否在某个时间段内
moment().isBetween(moment-like, moment-like);
moment().isBetween(moment-like, moment-like, String);
moment().isBetween('2018-01-01', '2018-12-31') // true
是否闰年
给定时间所在年份是否闰年
moment().isLeapYear()
moment().isLeapYear() // false
moment(['2016']) // true
是否 moment 对象
给定参数是否为 moment 类型
注意:moment 后没有括号
moment.isMoment(obj)
moment.isMoment(new Date()) // false
moment.isMoment(moment()) // true
是否 Date 对象
给定参数是否为 Date 类型
注意:moment 后没有括号
moment.isDate(obj);
moment.isDate(new Date()) // true
moment.isDate(moment()) // false
时间段
创建 duration
moment.duration(Number, String);
moment.duration(Number);
moment.duration(Object);
moment.duration(String);
两个时间点间隔的 年| 月| 日| 小时 | 分钟 | 秒
const a = moment([2016, 6, 26, 10, 11, 23])
const b = moment()
Math.floor(moment.duration(b.diff(a)).asYears()) // 2
Math.floor(moment.duration(b.diff(a)).asMonths()) // 26
Math.floor(moment.duration(b.diff(a)).asDays()) // 807