官方api
npm install moment -g # 全局安装
npm install moment # 安装
//require 方式
var moment=require('moment');
//import 方式
import moment from 'moment';
//require 方式
require('moment/locale/zh-cn')
moment.locale('zh-cn');
//import 方式
import 'moment/locale/zh-cn'
moment.locale('zh-cn');
格式化参数对照表:
格式代码 | 说明 | 返回值例子 |
---|---|---|
M | 数字表示的月份,没有前导零 | 1到12 |
MM | 数字表示的月份,有前导零 | 01到12 |
MMM | 三个字母缩写表示的月份 | Jan到Dec |
MMMM | 月份,完整的文本格式 | January到December |
Q | 季度 | 1到4 |
D | 月份中的第几天,没有前导零 | 1到31 |
DD | 月份中的第几天,有前导零 | 01到31 |
d | 星期中的第几天,数字表示 | 0到6,0表示周日,6表示周六 |
ddd | 三个字母表示星期中的第几天 | Sun到Sat |
dddd | 星期几,完整的星期文本 | 从Sunday到Saturday |
w | 年份中的第几周 | 如42:表示第42周 |
YYYY | 四位数字完整表示的年份 | 如:2014 或 2000 |
YY | 两位数字表示的年份 | 如:14 或 98 |
A | 大写的AM PM | AM PM |
a | 小写的am pm | am pm |
HH | 小时,24小时制,有前导零 | 00到23 |
H | 小时,24小时制,无前导零 | 0到23 |
hh | 小时,12小时制,有前导零 | 00到12 |
h | 小时,12小时制,无前导零 | 0到12 |
m | 没有前导零的分钟数 | 0到59 |
mm | 有前导零的分钟数 | 00到59 |
s | 没有前导零的秒数 | 1到59 |
ss | 有前导零的描述 | 01到59 |
X | Unix时间戳 | 1411572969 |
//当前日期格式化
moment().format('MMMM Do YYYY, h:mm:ss a'); -> 四月 6日 2015, 3:55:57 下午
moment().format('dddd'); -> 星期一
moment().format("MMM Do YY"); -> 4月 6日 15
moment().format('YYYY [escaped] YYYY'); -> 2015 escaped 2015
moment().format(); -> 2015-04-06T15:55:57+08:00
moment().format('YYYY-MM-DD'); -> 2015-04-06
moment().format('YYYY-MM-DD h:mm:ss a'); -> 2015-04-06 03:55:57 下午
//指定日期格式化
moment("20111031", "YYYYMMDD").fromNow(); -> 3年前
moment("20120620", "YYYYMMDD").fromNow(); -> 3年前
moment().startOf('day').fromNow(); -> 16小时前
moment().endOf('day').fromNow(); -> 8小时内
moment().startOf('hour').fromNow(); -> 1小时前
//当前日期向前或者向后推的日期格式化
moment().subtract(10, 'days').calendar(); -> 2015年3月27日
moment().subtract(6, 'days').calendar(); -> 上周二下午3点55
moment().subtract(3, 'days').calendar(); -> 上周五下午3点55
moment().subtract(1, 'days').calendar(); -> 昨天下午3点55
moment().calendar(); -> 今天下午3点55
moment().add(1, 'days').calendar(); -> 明天下午3点55
moment().add(3, 'days').calendar(); -> 本周四下午3点55
moment().add(10, 'days').calendar(); -> 2015年4月16日
//也可以使用下面方式日期格式化
moment().format('L'); -> 2015-04-06
moment().format('l'); -> 2015-04-06
moment().format('LL'); -> 2015年4月6日
moment().format('ll'); -> 2015年4月6日
moment().format('LLL'); -> 2015年4月6日下午3点55
moment().format('lll'); -> 2015年4月6日下午3点55
moment().format('LLLL'); -> 2015年4月6日星期一下午3点55
moment().format('llll'); -> 2015年4月6日星期一下午3点55
var now = moment();
或者
var now = moment(new Date())
moment(String);
// 使用字符串创建时间日期对象时,先会检查字符串是否与ISO-8601相匹配,然后再通过 new Date(String) 创建对象
//ISO 8601字符串需要日期部分
2013-02-08 # A calendar date part
2013-W06-5 # A week date part
2013-039 # An ordinal date part
//还可以包括时间部分,通过空格或大写字母T与日期部分分开
2013-02-08T09 # An hour time part separated by a T
2013-02-08 09 # An hour time part separated by a space
2013-02-08 09:30 # An hour and minute time part
2013-02-08 09:30:26 # An hour, minute, and second time part
2013-02-08 09:30:26.123 # An hour, minute, second, and millisecond time part
2013-02-08 24:00:00.000 # hour 24, minute, second, millisecond equal 0 means next day at midnight
//任何日期部分都可以包含时间部分
2013-02-08 09 # A calendar date part and hour time part
2013-W06-5 09 # A week date part and hour time part
2013-039 09 # An ordinal date part and hour time part
//如果一个时间部分被包括,一个从UTC偏移量也可被包括为+-HH:mm,+-HHmm,或Z
2013-02-08 09+07:00 # +-HH:mm
2013-02-08 09-0100 # +-HHmm
2013-02-08 09Z # Z
2013-02-08 09:30:26.123+07:00 # +-HH:mm
//如果字符串与上述任何格式都不匹配且无法解析Date.parse,moment#isValid则返回false
moment("not a real date").isValid(); // false
moment(String, String);
moment(String, String, String);
moment(String, String, Boolean);
moment(String, String, String, Boolean);
//如果您知道输入字符串的格式,则可以使用它来解析片刻
moment("12-25-1995", "MM-DD-YYYY");
//解析器忽略非字母数字字符,因此以下两个都将返回相同的内容
moment("12-25-1995", "MM-DD-YYYY");
moment("12/25/1995", "MM-DD-YYYY");
年月日对照表:
格式代码 | 说明 | 返回值例子 |
---|---|---|
YYYY | 4或2位数年份 | 2014 |
YY | 2位数年份 | 14 |
Q | 一年四分之一。将季度设置为季度的第一个月 | 1…4 |
M MM | 月份编号 | 1…12 |
MMM MMMM | 设置的语言环境中的月份名称 moment.locale() | Jan…December |
D DD | 一个月的一天 | 1…31 |
Do | 有序的月份日 | 1st…31st |
DDD DDDD | 1…365 | 一年中的一天 |
X | Unix时间戳 | 1410715640.579 |
x | Unix ms时间戳 | 1410715640579 |
周年,周和工作日对照表
格式代码 | 说明 | 返回值例子 |
---|---|---|
gggg | Locale 4位数周 | 2014 |
gg | Locale 2位数周 | 14 |
w ww | 一年中的第几周 | 1…53 |
e | 一周中的星期几 | 1…7 |
ddd dddd | 设置的语言环境中的日期名称 moment.locale() | Mon…Sunday |
GGGG | ISO 4位数周 | 2014 |
GG | ISO 2位数周 | 14 |
W WW | ISO周一年 | 1…53 |
E | ISO星期几 | 1…7 |
小时,分钟,秒,毫秒对照表
格式代码 | 说明 | 返回值例子 |
---|---|---|
H HH | 24小时的时间 | 0…23 |
hh | 小时,12小时制,有前导零 | 00到12 |
h | 小时,12小时制,无前导零 | 0到12 |
A | 大写的AM PM | AM PM |
a | 小写的am pm | am pm |
m | 没有前导零的分钟数 | 0到59 |
mm | 有前导零的分钟数 | 00到59 |
s | 没有前导零的秒数 | 1到59 |
ss | 有前导零的描述 | 01到59 |
S | 十分之一秒 | 0…9 |
SS | 几百秒 | 0…99 |
SSS | 千分之一秒 | 0…999 |
SSSS | 小秒 | 0000…9999 |
Z ZZ | 从UTC偏移量±HH:mm,±HHmm或Z | +12:00 |
//除非您指定时区偏移量,否则解析字符串将在当前时区中创建日期
moment("2010-10-20 4:30", "YYYY-MM-DD HH:mm"); // parsed as 4:30 local time
moment("2010-10-20 4:30 +0000", "YYYY-MM-DD HH:mm Z"); // parsed as 4:30 UTC
//如果由解析的输入产生的时刻不存在,moment#isValid则返回false
moment("2010 13", "YYYY MM").isValid(); // false (not a real month)
moment("2010 11 31", "YYYY MM DD").isValid(); // false (not a real day)
moment("2010 2 29", "YYYY MM DD").isValid(); // false (not a leap year)
moment("2010 notamonth 29", "YYYY MMM DD").isValid(); // false (not a real month name)
//可以将区域设置键作为第三个参数传递给moment()和moment.utc()
moment('2012 juillet', 'YYYY MMM', 'fr');
moment('2012 July', 'YYYY MMM', 'en');
//可以为最后一个参数指定一个布尔值,以使Moment使用严格的解析。严格的解析要求格式和输入完全匹配
moment('It is 2012-05-25', 'YYYY-MM-DD').isValid(); // true
moment('It is 2012-05-25', 'YYYY-MM-DD', true).isValid(); // false
moment('2012-05-25', 'YYYY-MM-DD', true).isValid(); // true
//解析两位数年份
//默认情况下,假设高于68的两位数年份在1900年,而68年或以下的年份假定为2000年。
//可以通过替换moment.parseTwoDigitYear方法来更改此设置
如果您不知道输入字符串的确切格式,但知道它可能是众多格式之一,则可以使用一组格式
moment(String, String[], String, Boolean);
moment("12-25-1995", ["MM-DD-YYYY", "YYYY-MM-DD"]);
//首选阵列中较早的格式
moment("29-06-1995", ["MM-DD-YYYY", "DD-MM", "DD-MM-YYYY"]); // uses the last format
moment("05-06-1995", ["MM-DD-YYYY", "DD-MM-YYYY"]); // uses the first format
//还可以指定locale和strictness参数。它们的工作方式与单格式情况相同
moment("29-06-1995", ["MM-DD-YYYY", "DD-MM-YYYY"], 'fr'); // uses 'fr' locale
moment("29-06-1995", ["MM-DD-YYYY", "DD-MM-YYYY"], true); // uses strict parsing
moment("05-06-1995", ["MM-DD-YYYY", "DD-MM-YYYY"], 'fr', true); // uses 'fr' locale and strict parsing
注意:解析多种格式比解析单一格式要慢得多。如果可以避免它,解析单个格式要快得多
moment(String, moment.CUSTOM_FORMAT, [String], [Boolean]);
moment(String, [..., moment.ISO_8601, ...], [String], [Boolean]);
moment("2010-01-01T05:06:07", moment.ISO_8601);
moment("2010-01-01T05:06:07", ["YYYY", moment.ISO_8601]);
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});
//day并且date键都表示每月的日期
//moment(Array)和new Date(year, month, date),月份是0索引
moment(Number);
var day = moment(1318781876406);
//与之类似new Date(Number),您可以通过传递一个整数值来创建片刻,
//该整数值表示自Unix Epoch(1970年1月1日12 AM UTC)以来的毫秒数
moment.unix(Number)
//要从Unix时间戳(自Unix Epoch以来的秒数)创建时刻,请使用moment.unix(Number)
var day = moment.unix(1318781876);
//实现为moment(timestamp * 1000),因此包括输入时间戳中的部分秒
var day = moment.unix(1318781876.721);
moment(Date);
//可以Moment使用预先存在的本机Javascript Date对象创建一个
var day = new Date(2011, 9, 16);
var dayWrapper = moment(day);
//这个克隆Date对象; 进一步改变Date不会影响Moment,反之亦然
moment(Number[]);
//可以使用一组数字创建一个时刻,这些数字镜像传递给新Date()的参数
[year, month, day, hour, minute, second, millisecond]
moment([2010, 1, 14, 15, 25, 50, 125]); // February 14th, 3:25:50.125 PM
//超过一年的任何值都是可选的,并且将默认为最低可能的数字
moment([2010]); // January 1st
moment([2010, 6]); // July 1st
moment([2010, 6, 10]); // July 10th
//使用数组构造将在当前时区中创建日期。要从UTC中的数组创建日期,请使用moment.utc(Number[])
moment.utc([2010, 1, 14, 15, 25, 50, 125]);
moment([2010, 13]).isValid(); // false (not a real month)
moment([2010, 10, 31]).isValid(); // false (not a real day)
moment([2010, 1, 29]).isValid(); // false (not a leap year)
moment(Moment);
//所有的时刻都是可变的。如果你想要克隆片刻,你可以明确地或隐含地这样做
var a = moment([2012]);
var b = moment(a);
a.year(2000);
b.year(); // 2012
//此外,您可以打电话moment#clone克隆片刻
var a = moment([2012]);
var b = a.clone();
a.year(2000);
b.year(); // 2012