moment:JavaScript 日期處理類庫棍弄,主要用于處理日期疤坝、時間酸舍,可以進行所需要的日期格式化,也可以按所需獲取相應(yīng)的時間榨为。
此次我們來簡單介紹下在vue項目使用moment惨好,以及一些常規(guī)操作。
安裝依賴:
npm install moment --save
引入(可以直接main.js引入随闺,也可以考慮新建個插件的文件夾昧狮,然后寫到一個moment.js文件中):
import Vue from 'vue';
import moment from 'moment';
import 'moment/locale/zh-cn'; // 獲取中國標準時間,避免出現(xiàn)utc時間
如果全局基本格式化都是完整日期格式板壮,可以考慮寫個vue過濾器:
根據(jù)傳入的時間默認格式化參數(shù)為YYYY-MM-DD HH:mm:ss的格式逗鸣,如果日期參數(shù)本身有問題,作出校驗按 ' - - ' 處理
Vue.filter('dateFormat', function filter(dateStr, pattern = 'YYYY-MM-DD HH:mm:ss') {
return dateStr ? moment(dateStr).format(pattern) : '- -';
});
常用的格式化操作可以參考官網(wǎng)绰精,我就不cv官網(wǎng)了(手動滑稽)
附上官網(wǎng)地址:moment.js官網(wǎng)
這里說下比較有爭議的點撒璧,舉個例子,我們有個日期選項卡(分別是日笨使、周卿樱、月、季硫椰、半年繁调、年),起初做的是按近期時間計算的靶草,如近一天蹄胰、近一周,但是后期又改為自然日奕翔、自然周裕寨。
所以如何獲取自然時間和近期時間就是我們需要考慮的問題。
格式化操作如下:
-
自然時間(分為起始時間和結(jié)束時間構(gòu)成的時間段,結(jié)束時間是當前的時間):
- 自然日:
moment().startOf('day').format('YYYY-MM-DD HH:mm:ss') // 起始時間(當前的00:00:00點) moment().format('YYYY-MM-DD HH:mm:ss') // 結(jié)束時間(當前系統(tǒng)的時間)
- 自然周:
moment().startOf('week').format('YYYY-MM-DD HH:mm:ss') // 起始時間(當前周周一的00:00:00點) moment().format('YYYY-MM-DD HH:mm:ss') // 結(jié)束時間(當前系統(tǒng)的時間)
- 自然月:
moment().startOf('months').format('YYYY-MM-DD HH:mm:ss') // 起始時間(當前月1號的00:00:00點) moment().format('YYYY-MM-DD HH:mm:ss') // 結(jié)束時間(當前系統(tǒng)的時間)
- 自然季:
moment().startOf('quarters').format('YYYY-MM-DD HH:mm:ss') // 起始時間(當前季度1號的00:00:00點) moment().format('YYYY-MM-DD HH:mm:ss') // 結(jié)束時間(當前系統(tǒng)的時間)
- 自然半年(比較特殊宾袜,需要區(qū)分上半年或者下半年):
moment().get('month') + 1 <= 6 ? moment().format(`${moment().get('year')}-01-01 00:00:00`) : moment().format(`${moment().get('year')}-07-01 00:00:00`) // 獲取當前月+1然后和6進行比較區(qū)分上下半年捻艳,上半年就計算1月1號的00點,下半年就計算7月1號的00點 moment().format('YYYY-MM-DD HH:mm:ss') // 結(jié)束時間(當前系統(tǒng)的時間)
- 自然年:
moment().startOf('years').format('YYYY-MM-DD HH:mm:ss') // 起始時間(當前年1號的00:00:00點) moment().format('YYYY-MM-DD HH:mm:ss') // 結(jié)束時間(當前系統(tǒng)的時間)
其實可以看到庆猫,基本都是通過startOf的不同參數(shù)來獲取的认轨,唯一需要注意的可能就是半年的概念了。
-
近期時間(分為起始時間和結(jié)束時間構(gòu)成的時間段月培,結(jié)束時間是當前的時間):
- 日(近一天):
moment().day(moment().day() - 1).format('YYYY-MM-DD HH:mm:ss') // 當前時間往前推一天的時間 moment().format('YYYY-MM-DD HH:mm:ss') // 結(jié)束時間(當前系統(tǒng)的時間)
- 周(近一周):
moment().day(moment().day() - 6).format('YYYY-MM-DD HH:mm:ss') // 當前時間往前推一周的時間 moment().format('YYYY-MM-DD HH:mm:ss') // 結(jié)束時間(當前系統(tǒng)的時間)
- 月(近一個月):
moment().subtract(1, 'months').format('YYYY-MM-DD HH:mm:ss') // 當前時間往前推一個月的時間 moment().format('YYYY-MM-DD HH:mm:ss') // 結(jié)束時間(當前系統(tǒng)的時間)
- 季(近三個月):
moment().subtract(1, 'quarters').format('YYYY-MM-DD HH:mm:ss') // 當前時間往前推三個月的時間 moment().format('YYYY-MM-DD HH:mm:ss') // 結(jié)束時間(當前系統(tǒng)的時間)
- 半年(近六個月):
moment().subtract(6, 'months').format('YYYY-MM-DD HH:mm:ss') // 當前時間往前推六個月的時間 moment().format('YYYY-MM-DD HH:mm:ss') // 結(jié)束時間(當前系統(tǒng)的時間)
- 年(近一年):
moment().subtract(1, 'years').format('YYYY-MM-DD HH:mm:ss') // 當前時間往前推一年的時間 moment().format('YYYY-MM-DD HH:mm:ss') // 結(jié)束時間(當前系統(tǒng)的時間)
以上就是獲取自然時間和近期時間的方法好渠。
期待能夠?qū)δ阌兴鶐椭鷡~~
如有問題,請指出节视,接受批評拳锚。