在后續(xù)的開發(fā)過程發(fā)現(xiàn)了如果不用到dayjs的地方彰导,想要調(diào)用時間,則用new Date()函數(shù)時候敲茄,toString()的時候不能直接螺戳,要new Date().toISOString()
才可以得到
在做項目的時候發(fā)現(xiàn)表示時間的時候如果用自帶的api很復(fù)雜,所以就想辦法找新的庫來用折汞,一開始用
Moment.js,但是后來發(fā)現(xiàn)這個太大了倔幼,所以就轉(zhuǎn)向了dayjs,可用的東西很多而且相對比較小一點爽待。這些是官方文檔給出的api和優(yōu)勢损同。
dayjs()
.startOf('month')
.add(1, 'day')
.set('year', 2018)
.format('YYYY-MM-DD HH:mm:ss')
?? 和 Moment.js 相同的 API 和用法
?? 不可變數(shù)據(jù) (Immutable)
?? 支持鏈式操作 (Chainable)
?? 國際化 I18n
?? 僅 2kb 大小的微型庫
?? 全瀏覽器兼容
我去了他們官網(wǎng)閱讀了一下,發(fā)現(xiàn)這個還有一個好處就是每次都會返回一個新的實例鸟款,使得不會改變原有數(shù)據(jù)膏燃,妙
dayjs官網(wǎng)
安裝
npm install dayjs --save
API
Day.js 有很多 API 來解析、處理何什、校驗组哩、增減、展示時間和日期
dayjs('2018-08-08') // 解析
dayjs().format('{YYYY} MM-DDTHH:mm:ss SSS [Z] A') // 展示
dayjs()
.set('month', 3)
.month() // 獲取
dayjs().add(1, 'year') // 處理
dayjs().isBefore(dayjs()) // 查詢
國際化 I18n
Day.js 支持國際化
但除非手動加載,多國語言默認是不會被打包到工程里的
import 'dayjs/locale/es' // 按需加載
dayjs.locale('es') // 全局使用西班牙語
dayjs('2018-05-05')
.locale('zh-cn')
.format() // 在這個實例上使用簡體中文
插件
插件是一些獨立的程序伶贰,可以給 Day.js 增加新功能和擴展已有功能
import advancedFormat from 'dayjs/plugin/advancedFormat' // 按需加載插件
dayjs.extend(advancedFormat) // 使用插件
dayjs().format('Q Do k kk X x') // 使用擴展后的API
而我本人則使用了其中一些api來操作時間蛛砰,比如這個
beautify(string: string) {
const day = dayjs(string);
const now = dayjs();
if (day.isSame(now, 'day')) {
return '今天';
} else if (day.isSame(now.subtract(1, 'day'), 'day')) {
return '昨天';
} else if (day.isSame(now.subtract(2, 'day'), 'day')) {
return '前天';
} else if (day.isSame(now, 'year')) {
return day.format('M月D日');
} else {
return day.format('YYYY年M月D日');
}
}
這里我封裝了一個beautify的函數(shù),使得可以實現(xiàn)一個日期的轉(zhuǎn)換成今天昨天的功能黍衙。