无意中遇到了一种很奇怪的日期格式,从接口中返回的日期是这样的,如 2018-02-06T11:59:22+08:00 。然而这却不是我们想要的,我们要的是这种,YYYY-MM-DD HH:mm:ss。
那么这种是怎么转换的呢?
这时候就可以使用一款很好用的日期、时间处理工具,moment.js。
对于moment.js,可以直接使用 CDN加速服务中的moment.js(moment.js),引入moment.js文件便可以开始使用了
(如:)。
或者使用npm安装到本地(npm install moment),然后使用的时候像这样
var moment = require(‘moment‘); moment().format();
举几个常见用法:
(1)、返回当前的日期时间。
moment().format(‘YYYY-MM-DD HH:mm:ss‘) // 2018-02-06 10:53:00
(2)、返回当前星期几
moment().format(‘d‘) // 2,表示星期二,其中1-6表示周一到周六,0表示周日
(3)、返回指定日期距离当前日期有多久
moment(‘20180125‘,‘YYYYMMDD‘).fromNow() // 12 days ago
(4)、返回几天后的日期
moment().add(‘days‘,7).format(‘YYYY年MM月DD日‘) // 表示7天后的日期
然而在浏览器会有这样的提示:Deprecation warning: moment().add(period, number) is deprecated. Please use moment().add(number, period)。意思是不赞成使用这种方式,推荐使用另一种方式moment().add(number, period)。
因此,上面那种写法应该改为:
moment().add(7,‘days‘).format(‘YYYY年MM月DD日‘) // 可以写days,也可写day
(5)、返回10小时后的日期
moment().add(10, ‘hours‘).format(‘YYYY年MM月DD日 HH:mm:ss‘) // 2018年02月06日 21:07:18。同样的可写hour,也可写hours
(6)、返回10年后的日期
moment().add(10, ‘years‘).format(‘YYYY年MM月DD日 HH:mm:ss‘) // 可写year,也可写years
现在回过头来说说2018-02-06T11:59:22+08:00这种格式的转换。
引入moment.js文件
然后 moment(‘2018-02-06T11:59:22+08:00‘).format(‘YYYY-MM-DD HH:mm:ss‘)就over了。
常用的时间格式如下:
格式代码
说明
返回值例子
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