最近在開發(fā)中遇到下面一些需求場景
場景一:以當前時間為基準獲取前后n年作為時間范圍作為接口入?yún)?/p>
場景二:以指定時間為基準獲取前后n年作為時間范圍作為接口入?yún)?/p>
場景三:入?yún)⒁蟮臅r間格式與當前時間格式不一致
場景四:判斷當前時間是哪一季度
以上調用接口場景的入?yún)⒍夹枰獙υ既掌谧兞窟M行一些操作變換才能滿足需求房铭,意味著我們要寫一些額外的代碼兑障。但通常需求很急時候未巫,我們既需要高效的完成編碼工作媳谁,同時又需要保證代碼的質量秘血。每當這時如果自己去寫這些繁瑣的轉換邏輯既會浪費自己的寶貴時間也不利于代碼為其他同事所用局雄。這時使用成熟的解決方案就顯得尤其重要奶卓。moment
就是一個成熟的js日期處理庫壳贪。使用它可以為我們帶來如下好處:
書寫更少的代碼,讓業(yè)務邏輯更清晰
代碼更健壯
優(yōu)秀的第三方庫寝杖,別人接手我們的代碼更容易
下面我們就看看如何通過moment
庫快速完成我們的需求
這里直接跳過
moment
在不同環(huán)境下的安裝违施,具體可到官網(wǎng)查看
一、拿到當前時間和指定時間
調用moment()
方法即可解析并獲得指定的日期封裝對象瑟幕。這一封裝對象也是后面一系列對時間進行操作的基礎磕蒲,該方法支持多種入?yún)⒎绞剑粘J褂媚玫疆斍皶r間無需傳參只盹,獲取指定時間傳遞符合ISO8601標準的字符串格式即可辣往。
拿到當前時間:moment()
拿到指定時間:moment(String)
如:moment('2020-01-01')
在使用字符串格式創(chuàng)建日期對象時我們盡量與ISO 8601規(guī)范格式匹配,如果不匹配那么為了保證在不同瀏覽器下解析的兼容性殖卑,需要傳入格式參數(shù)站削。
二、對拿到的時間進行操作
moment
提供了add
和subtract
方法分別用來對當前的時間進行加和減操作
列子:當前時間加減2年
moment().add(2, 'years')
moment().subtract(2, 'years')
指定時間加減2年
moment('2021-03-19').add(2, 'years')
moment('2021-03-19').subtract(2, 'years')
三孵稽、格式化輸出
前面我們已經(jīng)拿到了想要的時間许起,但有時格式并不符合需求十偶,moment
提供了format
方法對輸出進行格式化
這里以上一步的指定時間為例
moment('2021-03-19').add(2, 'years').format(token)
這里的token是指定的解析格式模板字符串。
給format方法傳遞一個解析格式如'YYYY-MM-DD'
會輸出2021-03-09园细,輸入'YYYY/MM/DD'
就會輸出'2021/03/09'
要轉義格式字符串中的字符惦积,可以將字符包在方括號中
moment('2021-03-19').add(2, 'years').format('[今天] YYYY-MM-DD')
輸出 今天 2021-03-19
四、判斷當前時間是哪一季度
moment().quarter()
以上是對四種場景下moment的簡單使用猛频,moment
使用起來非常的簡單方便狮崩,官方文檔對解析、取值/賦值鹿寻、操作睦柴、顯示、查詢以及國際化幾個模塊都有詳細的講解毡熏,在日常開發(fā)中還是要多多的使用起來坦敌!