moment:JavaScript 日期处理类库,主要用于处理日期、时间,可以进行所需要的日期格式化,也可以按所需获取相应的时间。
此次我们来简单介绍下在vue项目使用moment,以及一些常规操作。
安装依赖:
npm install moment --save
引入(可以直接main.js引入,也可以考虑新建个插件的文件夹,然后写到一个moment.js文件中):
import Vue from 'vue';
import moment from 'moment';
import 'moment/locale/zh-cn'; // 获取中国标准时间,避免出现utc时间
如果全局基本格式化都是完整日期格式,可以考虑写个vue过滤器:
根据传入的时间默认格式化参数为YYYY-MM-DD HH:mm:ss的格式,如果日期参数本身有问题,作出校验按 ' - - ' 处理
Vue.filter('dateFormat', function filter(dateStr, pattern = 'YYYY-MM-DD HH:mm:ss') {
return dateStr ? moment(dateStr).format(pattern) : '- -';
});
常用的格式化操作可以参考官网,我就不cv官网了(手动滑稽)
附上官网地址:moment.js官网
这里说下比较有争议的点,举个例子,我们有个日期选项卡(分别是日、周、月、季、半年、年),起初做的是按近期时间计算的,如近一天、近一周,但是后期又改为自然日、自然周。
所以如何获取自然时间和近期时间就是我们需要考虑的问题。
格式化操作如下:
-
自然时间(分为起始时间和结束时间构成的时间段,结束时间是当前的时间):
- 自然日:
moment().startOf('day').format('YYYY-MM-DD HH:mm:ss') // 起始时间(当前的00:00:00点) moment().format('YYYY-MM-DD HH:mm:ss') // 结束时间(当前系统的时间)
- 自然周:
moment().startOf('week').format('YYYY-MM-DD HH:mm:ss') // 起始时间(当前周周一的00:00:00点) moment().format('YYYY-MM-DD HH:mm:ss') // 结束时间(当前系统的时间)
- 自然月:
moment().startOf('months').format('YYYY-MM-DD HH:mm:ss') // 起始时间(当前月1号的00:00:00点) moment().format('YYYY-MM-DD HH:mm:ss') // 结束时间(当前系统的时间)
- 自然季:
moment().startOf('quarters').format('YYYY-MM-DD HH:mm:ss') // 起始时间(当前季度1号的00:00:00点) moment().format('YYYY-MM-DD HH:mm:ss') // 结束时间(当前系统的时间)
- 自然半年(比较特殊,需要区分上半年或者下半年):
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进行比较区分上下半年,上半年就计算1月1号的00点,下半年就计算7月1号的00点 moment().format('YYYY-MM-DD HH:mm:ss') // 结束时间(当前系统的时间)
- 自然年:
moment().startOf('years').format('YYYY-MM-DD HH:mm:ss') // 起始时间(当前年1号的00:00:00点) moment().format('YYYY-MM-DD HH:mm:ss') // 结束时间(当前系统的时间)
其实可以看到,基本都是通过startOf的不同参数来获取的,唯一需要注意的可能就是半年的概念了。
-
近期时间(分为起始时间和结束时间构成的时间段,结束时间是当前的时间):
- 日(近一天):
moment().day(moment().day() - 1).format('YYYY-MM-DD HH:mm:ss') // 当前时间往前推一天的时间 moment().format('YYYY-MM-DD HH:mm:ss') // 结束时间(当前系统的时间)
- 周(近一周):
moment().day(moment().day() - 6).format('YYYY-MM-DD HH:mm:ss') // 当前时间往前推一周的时间 moment().format('YYYY-MM-DD HH:mm:ss') // 结束时间(当前系统的时间)
- 月(近一个月):
moment().subtract(1, 'months').format('YYYY-MM-DD HH:mm:ss') // 当前时间往前推一个月的时间 moment().format('YYYY-MM-DD HH:mm:ss') // 结束时间(当前系统的时间)
- 季(近三个月):
moment().subtract(1, 'quarters').format('YYYY-MM-DD HH:mm:ss') // 当前时间往前推三个月的时间 moment().format('YYYY-MM-DD HH:mm:ss') // 结束时间(当前系统的时间)
- 半年(近六个月):
moment().subtract(6, 'months').format('YYYY-MM-DD HH:mm:ss') // 当前时间往前推六个月的时间 moment().format('YYYY-MM-DD HH:mm:ss') // 结束时间(当前系统的时间)
- 年(近一年):
moment().subtract(1, 'years').format('YYYY-MM-DD HH:mm:ss') // 当前时间往前推一年的时间 moment().format('YYYY-MM-DD HH:mm:ss') // 结束时间(当前系统的时间)
以上就是获取自然时间和近期时间的方法。
期待能够对你有所帮助~~~
如有问题,请指出,接受批评。