無意中遇到了一種很奇怪的日期格式,從接口中返回的日期是這樣的,如 2018-02-06T11:59:22+08:00 。然而這卻不是我們想要的,我們要的是這種,YYYY-MM-DD HH:mm:ss。
那么這種是怎么轉換的呢?
這時候就可以使用一款很好用的日期、時間處理工具,moment.js。
對於moment.js,可以直接使用 CDN加速服務中的moment.js(moment.js),引入moment.js文件便可以開始使用了
(如:<script src="https://cdn.bootcss.com/moment.js/2.20.1/moment.js"></script>)。
或者使用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天后的日期
然而在瀏覽器會有這樣的提示:
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文件
<script src="https://cdn.bootcss.com/moment.js/2.20.1/moment.js"></script>
然后 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 |