npm install moment
确保您已经引入moment
// 在main.js文件种引入Moment.js库
const moment = require('moment');
文章目录
一、快速选择本周、本日、本月、上周、下周
// const now = new Date();
// const dayOfWeek = now.getDay();
// const sunday = new Date(now);
// sunday.setDate(sunday.getDate() - dayOfWeek + 1); // 本周第一天,周一
// const saturday = new Date(sunday);
// saturday.setDate(saturday.getDate() + 6); // 本周最后一天,周日
// console.log(
// `本周的时间范围是:${sunday.toISOString()} 到 ${saturday.toISOString()}`
// );
let now = moment();
let year = now.format('Y');
let year = now.format('M');
let year = now.format('D');
console.log(`今天是${year}年${month}月${day}日`);
// 今天是2020年04月04日
二、moment和GMT(标准时间)互转
// GMT格式化
let startTime = this.$moment().format("YYYY.MM.DD");
let endTime = this.$moment().add(1, "days").format("YYYY.MM.DD");
// moment转为GMT
let dateOptions = [new Date(startTime), new Date(endTime)];
// 获取当前周几,0--周日,1--周一,以此类推
let startTime = this.$moment().format("YYYY.MM.DD");
// 计算两次时间差几天
let start = this.$moment("2024-07-02")
let end = this.$moment("2024-07-05")
let num = end.diff(start, 'days')
三、获取某一天的上周和下周
1、获取某一天的上周和下周(从周一开始的一周)
// 假设你有一个给定的日期
const givenDate = moment('2023-10-15'); // 你可以根据需要更改这个日期
// 获取上周的日期范围 (周一到周日)
const lastWeekStart = givenDate.clone().startOf('isoWeek').subtract(1, 'weeks').format("YYYY/MM/DD"); // 上周周一
const lastWeekEnd = lastWeekStart.clone().endOf('isoWeek').subtract(1, 'milliseconds').format("YYYY/MM/DD"); // 上周周日
// 获取一个包含上周所有日期的数组 (周一到周日)
const lastWeekDays = [];
for (let i = 0; i < 7; i++) {
lastWeekDays.push(lastWeekStart.clone().add(i, 'days').format('YYYY-MM-DD'));
}
// 获取下周的日期范围 (周一到周日)
const nextWeekStart = givenDate.clone().startOf('isoWeek').add(1, 'weeks').format("YYYY/MM/DD"); // 下周周一
const nextWeekEnd = nextWeekStart.clone().endOf('isoWeek').format("YYYY/MM/DD"); // 下周周日
// 获取一个包含下周所有日期的数组 (周一到周日)
const nextWeekDays = [];
for (let i = 0; i < 7; i++) {
nextWeekDays.push(nextWeekStart.clone().add(i, 'days').format('YYYY-MM-DD'));
}
// 打印结果
console.log('上周的日期范围 (周一到周日):', lastWeekDays);
console.log('下周的日期范围 (周一到周日):', nextWeekDays);
2、获取某一天的上周和下周(从周六开始的一周)
// 设置一个特定的日期,例如2023-03-15
const specificDay = '2023-03-15';
// 将特定日期转换为Moment对象
const day = moment(specificDay);
// 获取上周的开始和结束时间
const lastWeekStart = day.clone().subtract(1, 'weeks').startOf('week').format("YYYY/MM/DD");
const lastWeekEnd = day.clone().subtract(1, 'weeks').endOf('week').format("YYYY/MM/DD");
// 获取下周的开始和结束时间
const nextWeekStart = day.clone().add(1, 'weeks').startOf('week').format("YYYY/MM/DD");
const nextWeekEnd = day.clone().add(1, 'weeks').endOf('week').format("YYYY/MM/DD");
// 打印结果
console.log('上周开始:', lastWeekStart.format());
console.log('上周结束:', lastWeekEnd.format());
console.log('下周开始:', nextWeekStart.format());
console.log('下周结束:', nextWeekEnd.format());
四、计算两个日期相差天数
data(){
return {
infoForm: {
startDateTime: "2024-12-17 00:00:00",
endDateTime: "2024-12-17 00:00:00",
},
dayCounts: 0,
}
},
method: {
// 选择结束时间
endTimeChange(){
let time1 = this.$moment(this.infoForm.startDateTime, "YYYY-MM-DD HH:mm:ss");
let time2 = this.$moment(this.infoForm.endDateTime, "YYYY-MM-DD HH:mm:ss");
// 输出时间差
let diff = time2.diff(time1);
let duration = this.$moment.duration(diff)
let tempDays = duration.days()
let tempHours = duration.hours()
if(tempHours > 12){
tempDays += 1
} else if(tempHours <= 12 && tempHours != 0) {
tempDays += 0.5
}
this.dayCounts = tempDays
},
}