Preface
前端很多場(chǎng)景都會(huì)涉及到對(duì)時(shí)間的處理,我所用得最多的庫(kù)是moment脱惰。本文是對(duì)moment的高頻用法的總結(jié)。
用法總結(jié)
指定語(yǔ)言;不然可能引起一些不必要的bug跺嗽。
# 記得指定為對(duì)應(yīng)的語(yǔ)言;
moment.locale('zh-cn');
獲取時(shí)間戳
# 精確到毫秒
moment().valueOf()
## 1584182611042 舔庶;返回值為數(shù)值類型
moment().format('x')
## 返回值為字符串類型
# 精確到秒
moment().unix()
## 1584182618 精確到秒 返回值為數(shù)值類型
moment().format('X')
## 返回值為字符串類型
生成指定時(shí)間的moment
moment("1995-12-25");
# 帶格式
# 解析器會(huì)忽略非字母和數(shù)字的字符抛蚁,因此以下兩個(gè)都將會(huì)返回相同的東西。
moment("12-25-1995", "MM-DD-YYYY");
moment("12/25/1995", "MM-DD-YYYY");
獲取對(duì)象
moment().toObject();
# 返回一個(gè)包括:年惕橙、月瞧甩、日、時(shí)弥鹦、分肚逸、秒、毫秒的對(duì)象
# {
years: 2020
months: 2
date: 14
hours: 18
minutes: 47
seconds: 56
milliseconds: 526
}
格式化
moment().format();
# 2020-03-14T19:14:05+08:00
moment().format('YYYY-MM-DD HH:mm:ss');
# 2020-03-14 19:23:29
獲取時(shí)間
# 獲取今天0時(shí)0分0秒
moment().startOf('day')
# 獲取本周第一天(周日)0時(shí)0分0秒
moment().startOf('week')
# 獲取本周周一0時(shí)0分0秒
moment().startOf('isoWeek')
# 獲取當(dāng)前月第一天0時(shí)0分0秒
moment().startOf('month')
# 獲取指定日期的0時(shí)0分0秒
moment('2019-10-20').startOf('day')
# 獲取今天23時(shí)59分59秒
moment().endOf('day')
# 獲取本周最后一天(周六)23時(shí)59分59秒
moment().endOf('week')
# 獲取本周周日23時(shí)59分59秒
moment().endOf('isoWeek')
# 獲取當(dāng)前月最后一天23時(shí)59分59秒
moment().endOf('month')
獲取當(dāng)月第一天是星期幾
# 用于設(shè)置星期幾彬坏,其中星期日為 0朦促、星期六為 6
moment().startOf('month').day()
獲取前n天 / 后n天
moment().add(7, 'days');
moment().subtract(7, 'days')
比較兩個(gè)時(shí)間的大小
# 第二個(gè)參數(shù)用于確定精度,且不僅僅是要檢查的單個(gè)值栓始,因此使用 day 將會(huì)檢查年份务冕、月份、日期幻赚。
moment('2010-10-31').isBefore('2010-12-31', 'day');
# true
moment('2010-10-20').isBefore('2010-12-31', 'year');
# false
moment('2010-10-20').isAfter('2009-12-31', 'year');
# true
moment('2010-10-20').isSame('2009-12-31', 'year');
# 判斷兩個(gè)時(shí)間是否相等
# 需要注意的是禀忆, isBefore與isAfter 都是開(kāi)區(qū)間,如果想使用閉區(qū)間落恼,應(yīng)使用
isSameOrBefore
isSameOrAfter
兩個(gè)時(shí)間的相差幾天
moment([2008, 2, 27]).diff([2007, 0, 28], 'day');
# 424
是否是閏年
moment().isLeapYear();
# true
moment([2001]).isLeapYear()
# false
獲取 月份和星期 枚舉列表
moment.months()
# ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]
moment.monthsShort()
# ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
moment.weekdays()
# ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]
moment.weekdaysMin()
# ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"]
克隆
所有的 moment
都是可變的箩退。 調(diào)用任何一種操作方法都會(huì)改變?cè)嫉?moment
。 如果要?jiǎng)?chuàng)建副本并對(duì)其進(jìn)行操作佳谦,則應(yīng)在操作 moment
之前使用 moment#clone
戴涝。
# 在 moment 上調(diào)用 moment() 將會(huì)克隆它。
var a = moment([2012]);
var b = moment(a);
a.year(2000);
b.year(); // 2012
# 此外,也可以調(diào)用 moment#clone 克隆 moment啥刻。
var a = moment([2012]);
var b = a.clone();
a.year(2000);
b.year(); // 2012
獲取當(dāng)月總天數(shù)
moment().daysInMonth()
參考鏈接
與我交流
加我微信【sail19971026】,可進(jìn)入技術(shù)交流群奸鸯。
關(guān)注微信公眾號(hào)【李一二】,回復(fù)【編程書(shū)籍】郑什,可獲得50本+技術(shù)書(shū)籍府喳。