data(){
return{
timer: null, // 存储定时器的ID
startTime: null, // 开始时间(毫秒)
endTime: null, // 结束时间(毫秒)
tomTime: null, // 明天开始时间(毫秒)
interval: 1000, // 每隔5分钟(毫秒)
}
},
mounted(){
this.startTimer()
},
methods: {
triggerMethod() {
console.log('Method triggered at', new Date().toLocaleTimeString());
// 在这里执行你的代码
},
// 启动定时器 方法
startTimer() {
const that = this
const now = new Date();
const startHour = 9;
const startMinute =0;
const endHour = 11;
const endMinute = 0;
// 计算开始时间和结束时间(毫秒)
this.startTime = new Date(now.getFullYear(), now.getMonth(), now.getDate(), startHour, startMinute).getTime();
this.tomTime = new Date(now.getFullYear(), now.getMonth(), now.getDate() + 1, startHour, startMinute).getTime();
this.endTime = new Date(now.getFullYear(), now.getMonth(), now.getDate(), endHour, endMinute).getTime();
// 如果当前时间晚于开始时间,则立即启动定时器;否则等待到开始时间
if (this.startTime <= now.getTime() && now.getTime() <= this.endTime) {
this.runTimer();
} else {
setTimeout(() => {
that.runTimer();
}, this.tomTime - now.getTime());
}
},
// 运行定时器 方法
runTimer() {
if (this.timer) {
clearInterval(this.timer);
}
this.timer = setInterval(() => {
if (this.startTime <= new Date().getTime() && new Date().getTime() <=
this.endTime) {
this.triggerMethod()
}
else {
this.timer = null;
}
}, 1000)
},}
beforeDestroy() {
// 在组件销毁前清除定时器
if (this.timer) {
clearInterval(this.timer);
this.timer = null;
}
},
每天9点到11点开启定时器
最新推荐文章于 2024-09-06 15:33:25 发布
文章描述了一个使用Vue.js编写的组件,它通过定时器在特定时间范围(9:00-11:00)触发`triggerMethod`方法。组件在挂载时初始化定时器,如果当前时间不在范围内,则延迟到明天开始执行。
摘要由CSDN通过智能技术生成