Moment.js常見用法總結(jié)

Moment.js常見用法總結(jié)

Moment.js是一個(gè)輕量級(jí)的JavaScript時(shí)間庫(kù),它方便了日常開發(fā)中對(duì)時(shí)間的操作,提高了開發(fā)效率。

? 日常開發(fā)中轿塔,通常會(huì)對(duì)時(shí)間進(jìn)行下面這幾個(gè)操作:比如獲取時(shí)間,設(shè)置時(shí)間请垛,格式化時(shí)間催训,比較時(shí)間等等。接下來(lái)宗收,我將按照這些操作對(duì)Moment.js中的Doc進(jìn)行整理分類,方便學(xué)習(xí)和日后的查閱亚兄。

獲取時(shí)間

  • Start of Time

    moment().startOf(String)
    
    • 獲取今天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')
      
  • End of Time

    moment().endOf(String)
    
    • 獲取今天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')
      
  • Days in Month

    moment().daysInMonth()
    
    • 獲取當(dāng)前月的總天數(shù)
      moment().daysInMonth() 
      
  • Timestamp

    • 獲取時(shí)間戳(以秒為單位)
    moment().format('X') // 返回值為字符串類型
    moment().unix() // 返回值為數(shù)值型
    
    • 獲取時(shí)間戳(以毫秒為單位)
    moment().format('x') // 返回值為字符串類型
    moment().valueOf() // 返回值為數(shù)值型
    
  • Get Time

    • 獲取年份
      moment().year()
      moment().get('year')
      
    • 獲取月份
      moment().month() (0~11, 0: January, 11: December)
      moment().get('month')
      
    • 獲取一個(gè)月中的某一天
      moment().date()
      moment().get('date')
      
    • 獲取一個(gè)星期中的某一天
      moment().day() (0~6, 0: Sunday, 6: Saturday)
      moment().weekday() (0~6, 0: Sunday, 6: Saturday)
      moment().isoWeekday() (1~7, 1: Monday, 7: Sunday)
      moment().get('day')
      mment().get('weekday')
      moment().get('isoWeekday')
      
    • 獲取小時(shí)
      moment().hours()
      moment().get('hours')
      
    • 獲取分鐘
      moment().minutes()
      moment().get('minutes')
      
    • 獲取秒數(shù)
      moment().seconds()
      moment().get('seconds')
      
    • 獲取當(dāng)前的年月日時(shí)分秒
      moment().toArray() // [years, months, date, hours, minutes, seconds, milliseconds]
      moment().toObject() // {years: xxxx, months: x, date: xx ...}
      

設(shè)置時(shí)間

  • Set Time

    moment().year(Number), moment().month(Number)...
    moment().set(String, Int)
    moment().set(Object)
    
    • 設(shè)置年份
      moment().year(2019)
      moment().set('year', 2019)
      moment().set({year: 2019})
      
    • 設(shè)置月份
      moment().month(11) (0~11, 0: January, 11: December)
      moment().set('month', 11) 
      
    • 設(shè)置某個(gè)月中的某一天
      moment().date(15)
      moment().set('date', 15)
      
    • 設(shè)置某個(gè)星期中的某一天
      moment().weekday(0) // 設(shè)置日期為本周第一天(周日)
      moment().isoWeekday(1) // 設(shè)置日期為本周周一
      moment().set('weekday', 0)
      moment().set('isoWeekday', 1)
      
    • 設(shè)置小時(shí)
      moment().hours(12)
      moment().set('hours', 12)
      
    • 設(shè)置分鐘
      moment().minutes(30)
      moment().set('minutes', 30)
      
    • 設(shè)置秒數(shù)
      moment().seconds(30)
      moment().set('seconds', 30)
      
  • Add Time

    moment().add(Number, String)
    moment().add(Object)
    
    • 設(shè)置年份
      moment().add(1, 'years')
      moment().add({years: 1})
      
    • 設(shè)置月份
      moment().add(1, 'months')
      
    • 設(shè)置日期
      moment().add(1, 'days')
      
    • 設(shè)置星期
      moment().add(1, 'weeks')
      
    • 設(shè)置小時(shí)
      moment().add(1, 'hours')
      
    • 設(shè)置分鐘
      moment().add(1, 'minutes')
      
    • 設(shè)置秒數(shù)
      moment().add(1, 'seconds')
      
  • Subtract Time

    moment().subtract(Number, String)
    moment().subtract(Object)
    
    • 設(shè)置年份
      moment().subtract(1, 'years')
      moment().subtract({years: 1})
      
    • 設(shè)置月份
      moment().subtract(1, 'months')
      
    • 設(shè)置日期
      moment().subtract(1, 'days')
      
    • 設(shè)置星期
      moment().subtract(1, 'weeks')
      
    • 設(shè)置小時(shí)
      moment().subtract(1, 'hours')
      
    • 設(shè)置分鐘
      moment().subtract(1, 'minutes')
      
    • 設(shè)置秒數(shù)
      moment().subtract(1, 'seconds')
      

格式化時(shí)間

  • Format Time

    moment().format()
    moment().format(String)
    
    • 格式化年月日: 'xxxx年xx月xx日'
      moment().format('YYYY年MM月DD日')
      
    • 格式化年月日: 'xxxx-xx-xx'
      moment().format('YYYY-MM-DD')
      
    • 格式化時(shí)分秒(24小時(shí)制): 'xx時(shí)xx分xx秒'
      moment().format('HH時(shí)mm分ss秒')
      
    • 格式化時(shí)分秒(12小時(shí)制):'xx:xx:xx am/pm'
      moment().format('hh:mm:ss a')
      
    • 格式化時(shí)間戳(以秒為單位)
      moment().format('X') // 返回值為字符串類型
      
    • 格式化時(shí)間戳(以毫秒為單位)
      moment().format('x') // 返回值為字符串類型
      

比較時(shí)間

  • Difference

    moment().diff(Moment|String|Number|Date|Array)
    
    • 獲取兩個(gè)日期之間的時(shí)間差
      let start_date = moment().subtract(1, 'weeks')
      let end_date = moment()
      
      end_date.diff(start_date) // 返回毫秒數(shù)
      
      end_date.diff(start_date, 'months') // 0
      end_date.diff(start_date, 'weeks') // 1
      end_date.diff(start_date, 'days') // 7
      start_date.diff(end_date, 'days') // -7
      

轉(zhuǎn)化為JavaScript原生Date對(duì)象

moment().toDate()
new Date(moment())
  • 將Moment時(shí)間轉(zhuǎn)換為JavaScript原生Date對(duì)象

    let m = moment()
    let nativeDate1 = m.toDate()
    let nativeDate2 = new Date(m)
    
    String(nativeDate1) === String(nativeDate2) // true
    

實(shí)戰(zhàn)

  • 獲取昨日0時(shí)0分0秒到昨日23時(shí)59分59秒混稽, 格式:[milliseconds, milliseconds]
  • 獲取上周一到上周日時(shí)間范圍,格式: [seconds, seconds]
  • 獲取上個(gè)月第一天和最后一天時(shí)間范圍审胚, 格式:[YYYY-MM-DD, YYYY-MM-DD]
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末匈勋,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子膳叨,更是在濱河造成了極大的恐慌洽洁,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,427評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件菲嘴,死亡現(xiàn)場(chǎng)離奇詭異饿自,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)龄坪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門昭雌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人健田,你說(shuō)我怎么就攤上這事烛卧。” “怎么了妓局?”我有些...
    開封第一講書人閱讀 165,747評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵总放,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我好爬,道長(zhǎng)局雄,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,939評(píng)論 1 295
  • 正文 為了忘掉前任抵拘,我火速辦了婚禮哎榴,結(jié)果婚禮上型豁,老公的妹妹穿的比我還像新娘。我一直安慰自己尚蝌,他們只是感情好迎变,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著飘言,像睡著了一般衣形。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上姿鸿,一...
    開封第一講書人閱讀 51,737評(píng)論 1 305
  • 那天谆吴,我揣著相機(jī)與錄音,去河邊找鬼苛预。 笑死句狼,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的热某。 我是一名探鬼主播腻菇,決...
    沈念sama閱讀 40,448評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼昔馋!你這毒婦竟也來(lái)了筹吐?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,352評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤秘遏,失蹤者是張志新(化名)和其女友劉穎丘薛,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體邦危,經(jīng)...
    沈念sama閱讀 45,834評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡洋侨,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評(píng)論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了铡俐。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片凰兑。...
    茶點(diǎn)故事閱讀 40,133評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖审丘,靈堂內(nèi)的尸體忽然破棺而出吏够,到底是詐尸還是另有隱情,我是刑警寧澤滩报,帶...
    沈念sama閱讀 35,815評(píng)論 5 346
  • 正文 年R本政府宣布锅知,位于F島的核電站,受9級(jí)特大地震影響脓钾,放射性物質(zhì)發(fā)生泄漏售睹。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評(píng)論 3 331
  • 文/蒙蒙 一可训、第九天 我趴在偏房一處隱蔽的房頂上張望昌妹。 院中可真熱鬧捶枢,春花似錦、人聲如沸飞崖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)固歪。三九已至蒜鸡,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間牢裳,已是汗流浹背逢防。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蒲讯,地道東北人忘朝。 一個(gè)月前我還...
    沈念sama閱讀 48,398評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像判帮,于是被迫代替她去往敵國(guó)和親辜伟。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評(píng)論 2 355