在JavaScript中使用日期和時間不是一件容易的事。這就是爲何在許多app的package.json文件中能夠看到像Moment.js這種類庫。
Moment.js是最流行的日期管理類庫之一,有了它web工程師能夠方便地解析,格式化和計算日期。
不過近期Moment.js在官網發佈了公告,正式宣佈項目進入維護狀態,甚至可能再也不修復發現的bug。
那麼問題來了:咱們還有哪些其餘選擇呢?
Moment.js開發團隊推薦了幾個類庫,其中一個即是date-fns。date-fns被認爲是一個優秀的替代品,不僅是由於它提供了一樣豐富的功能,此外它遵循函數式編程規範,也是一大優點。
安裝date-fns
你可使用npm/Yarn安裝date-fns:
格式化日期
格式化日期是像Momentjs/date-fns這類庫的基礎功能。這是由於JavaScript沒有內置的方法來解決這個問題。
date-fns使用了和Moment.js相似的字符串模式:
就這麼簡單。它支持許多日期格式,能夠在官方文檔上查閱。
增長/減小日期
如今咱們能夠格式化日期了,該怎麼對日期應用加法和減法呢?有幾個函數能夠幫咱們完成這個任務:
addDays
subDays
addWeeks
subWeeks
addMonths
subMonths
在下面的例子中,咱們爲指定日期增長1年:
日期本地化
格式化日期很容易,可是如何本地化日期呢?咱們都知道訪問網站的訪客可能來自世界各地,咱們不能要求他們都和咱們的語言同樣。
JavaScript(簡稱「JS」)是一種具備函數優先的輕量級,解釋型或即時編譯型的高級編程語言。雖然它是做爲開發Web頁面的腳本語言而出名的,可是它也被用到了不少非瀏覽器環境中,JavaScript基於原型編程、多範式的動態腳本語言,而且支持面向對象、命令式和聲明式(如函數式編程)風格。web
JavaScript在1995年由Netscape公司的BrendanEich,在網景導航者瀏覽器上首次設計實現而成。由於Netscape與Sun合做,Netscape管理層但願它外觀看起來像Java,所以取名爲JavaScript。但實際上它的語法風格與Self及Scheme較爲接近。書筆記網https://www.yuananren.com編程語言JavaScript的標準是ECMAScript。截至2012年,全部瀏覽器都完整的支持ECMAScript5.1,舊版本的瀏覽器至少支持ECMAScript3標準。2015年6月17日,ECMA國際組織發佈了ECMAScript的第六版,該版本正式名稱爲ECMAScript2015,但一般被稱爲ECMAScript6或者ES6。
對於這個需求,能夠導入指定的本地化插件:
對比兩個日期
對比兩個日期的功能對於一個日期類庫來講相當重要。date-fns提供了幾個函數來作這件事。
例如,咱們能夠計算從1月1日到聖誕節的天然日天數以及工做日天數:
date-fns體積小巧
Moment.js被飽受詬病的一點是它龐大的體積。沒辦法導入單獨的函數,由於它的API只容許鏈式調用。這意味着你須要導入整個庫:
而在date-fns中,你只須要導入所需的函數便可:
這麼作的好處是date-fns的依賴包比Moment.js更小,下圖展現了二者的區別:
結語
隨着Moment.js的落幕,date-fns正受到愈來愈多的關注,平常開發也比較活躍。它豐富的功能以及對於ES6的良好支持,值得你在下一個項目中嘗試一下它!npm