moment.js 获取相关时间节点(今天、本周、本月、本季度、本年)
文章目录
- moment.js 获取相关时间节点(今天、本周、本月、本季度、本年)
- 起步
- 获取相关时间节点
- 自然周期效果
- 近…… 周期效果
- 代码
- 参考文章
moment.js 获取相关时间节点(今天、本周、本月、本季度、本年)
起步
安装 moment.js => npm install moment
代码中引入 import moment from 'moment';
简答使用,获取当前时间 => moment()
获取相关时间节点
this.$moment()
这个前缀换成对应的 moment 即可- 我只是挂载到了 vue 上而已
src\main.js
import moment from 'moment'// 全局挂载
Vue.prototype.$moment = moment
自然周期效果
- 代码示例执行时间:2024年10月11日10:52:04
近…… 周期效果
- 代码示例执行时间:2024年10月11日20:25:21
代码
(推荐下面代码里的写法2,代码更加简洁一些,通过参数 isNaturalCycle
可控制是自然周期还是近……的周期,true 自然周期 false 近……(周期))
export default {methods: {// 将时间标识转换为具体的时间getTimeOptionQuery (dateOption = "day", isNaturalCycle = true) {// dateOption => day 今天 week 本周 month 本月 season 本季度 year 本年// isNaturalCycle => true 自然周期 false 近……(周期)let query = {}if (isNaturalCycle) {switch (dateOption) {case 'year':query.endTime = this.$moment().endOf('year').format('YYYY-MM-DD HH:mm:ss')query.startTime = this.$moment().startOf('year').format('YYYY-MM-DD HH:mm:ss')breakcase 'season':query.endTime = this.$moment().endOf('quarter').format('YYYY-MM-DD HH:mm:ss')query.startTime = this.$moment().startOf('quarter').format('YYYY-MM-DD HH:mm:ss')breakcase 'month':query.endTime = this.$moment().endOf('month').format('YYYY-MM-DD HH:mm:ss')query.startTime = this.$moment().startOf('month').format('YYYY-MM-DD HH:mm:ss')breakcase 'week':query.endTime = this.$moment().endOf('isoWeek').format('YYYY-MM-DD HH:mm:ss')query.startTime = this.$moment().startOf('isoWeek').format('YYYY-MM-DD HH:mm:ss')breakdefault:query.endTime = this.$moment().endOf('day').format('YYYY-MM-DD HH:mm:ss')query.startTime = this.$moment().startOf('day').format('YYYY-MM-DD HH:mm:ss')break}} else {query.endTime = this.$moment().format('YYYY-MM-DD HH:mm:ss')switch (dateOption) {case 'year':query.startTime = this.$moment().subtract(1, 'years').format('YYYY-MM-DD HH:mm:ss')breakcase 'season':query.startTime = this.$moment().subtract(1, 'quarter').format('YYYY-MM-DD HH:mm:ss')breakcase 'month':query.startTime = this.$moment().subtract(1, 'month').format('YYYY-MM-DD HH:mm:ss')breakcase 'week':query.startTime = this.$moment().subtract(1, 'isoWeek').format('YYYY-MM-DD HH:mm:ss')breakdefault:query.startTime = this.$moment().subtract(1, 'day').format('YYYY-MM-DD HH:mm:ss')break}}return query},/* ------------------------------- 写法2 -------------------------------- */getTimeOptionQuery (dateOption = "day", isNaturalCycle = false) {// dateOption => day 今天 week 本周 month 本月 season 本季度 year 本年// isNaturalCycle => true 自然周期 false 近……(周期)let query = {}// 相关时间周期标识和 momentjs 中相关周期标识 对应关系const dateKeywordMap = {"year": "year","season": "quarter","month": "month","week": "isoWeek","day": "day",}const dateKeyword = dateKeywordMap[dateOption]if (isNaturalCycle) {query.startTime = this.$moment().startOf(dateKeyword).format('YYYY-MM-DD HH:mm:ss')query.endTime = this.$moment().endOf(dateKeyword).format('YYYY-MM-DD HH:mm:ss')} else {query.startTime = this.$moment().subtract(1, dateKeyword).format('YYYY-MM-DD HH:mm:ss')query.endTime = this.$moment().format('YYYY-MM-DD HH:mm:ss')}return query},}
}
参考文章
Moment.js 中文网 | 开发文档
moment.js 使用方法总结(最全)_momentjs-CSDN博客
【Moment.js】相关便捷日期获取、计算、月、季度、年_moment获取季度-CSDN博客