vue3 cron表达式

my-cron-vue3

这是一个cron表达式生成插件,基于vue3.0与element-plus实现
demo

项目地址

  • github : https://github.com/sugdove/my-cron-vue3

  • github项目启动: 1.yarn install 2.yarn serve

依赖

  • Vue 3.0.0+
  • elementplus

新增回显功能

  • 使用方法请看demo原github地址是 https://github.com/sugdove/my-cron-vue3

安装方式

 npm i my-cron-vue3

全局引入方式

//前置配置
import { createApp } from 'vue'
import ElementPlus from 'element-plus';
import 'element-plus/lib/theme-chalk/index.css';
import App from './App.vue'
//全局引入
import vue3Cron from 'my-cron-vue3' 
import 'my-cron-vue3/lib/vue3Cron.css' // 引入样式
const app = createApp(App)
app.use(ElementPlus).use(vue3Cron).mount('#app') //使用方式:<vue3Cron></vue3Cron>

局部引入方式

//局部引入
import { vue3Cron } from 'my-cron-vue3'
import 'my-cron-vue3/lib/vue3Cron.css' // 引入样式
export default {
    template: '<vue3Cron/>',
    components: { vue3Cron }
}

示例

<template>
  <div class="cron">
    <h1>my-cron-vue3</h1>
    <el-popover v-model:visible="state.cronPopover" width="700px" trigger="manual">
      <vue3Cron
        @change="changeCron"
        @close="togglePopover(false)"
        max-height="400px"
        i18n="cn"
      ></vue3Cron>
      <template #reference>
        <el-input
          @focus="togglePopover(true)"
          v-model="state.cron"
          placeholder="* * * * * ? *"
        ></el-input>
      </template>
    </el-popover>
  </div>
</template>

<script>
import { reactive,defineComponent, watch } from 'vue'
export default defineComponent ({
  setup(){
    const state = reactive({
      cronPopover: false,
      cron: ''
    })
    const changeCron = (val) => {
      if(typeof(val) !== 'string') return false
      state.cron = val
    }
    const togglePopover = (bol) => {
      state.cronPopover = bol
    }
    
    return {
      state,
      changeCron,
      togglePopover
    }
  }
});
</script>

<style lang="scss" scoped>
.cron {
  width: 400px;
  margin: 0 auto;
  margin-top: 100px;
  h1 {
    font-size: 50px;
    text-align: center;
  }
}
</style>

在示例中我使用了es6(es2015)语法,你可能需要引入babel-polyfill才能正常运行,或者你也可以用es5的写法

参数

  • i18n

    • 参数 {String} language 目前仅支持en|cn

    国际化支持

  • max-height

    • 参数 {String} height

    设定my-cron-vue3的max-height, 默认没有该属性

事件

  • change(cronText)

    • 参数:{String} cronText cron表达式的值

    当corn表达式的值发生变化变化时触发

  • close()

    • 参数:无

    当点击corn表达式选择框取消按钮时触发

使用注意

要注意点击选中某个radio,点中才能生效
要注意通过在线转换查看最近几次的执行时间,或者后端写接口。不要一分钟内执行多次这种操作误区。

一、cron介绍

Cron表达式是一个具有时间含义的字符串,字符串以56个空格隔开,分为67个域,格式为X X X X X X X。其中X是一个域的占位符。最后一个代表年份的域非必须,可省略。单个域有多个取值时,使用半角逗号,隔开取值。每个域可以是确定的取值,也可以是具有逻辑意义的特殊字符。每个域最多支持一个前导零。

二、cron表达式格式:

{秒数} {分钟} {小时} {日期} {月份} {星期} {年份(可为空)}
在这里插入图片描述

三、cron表达式在线生成器

https://cron.qqe2.com/
https://www.matools.com/cron/
四、常用表达式例子
(1) 0 0 2 1 * ? * 表示在每月的1日的凌晨2点调整任务

(2) 0 15 10 ? * MON-FRI 表示周一到周五每天上午10:15执行作业

(3)0 15 10 ? 6L 2002-2006 表示2002-2006年的每个月的最后一个星期五上午10:15执行

(4) 0 0 10,14,16 * * ? 每天上午10点,下午2点,4点触发

(5) 0 0/30 9-17 * * ? 朝九晚五工作时间内每半小时触发

(6) 0 0 12 ? * WED 表示每个星期三中午12点触发

(7) 0 0 12 * * ? 每天中午12点触发

(8) 0 15 10 ? * * 每天上午10:15触发

(9) 0 15 10 * * ? 每天上午10:15触发

(10) 0 15 10 * * ? * 每天上午10:15触发

(11) 0 15 10 * * ? 2005 2005年的每天上午10:15触发

(12) 0 * 14 * * ? 在每天下午2点到下午2:59期间的每1分钟触发

(13) 0 0/5 14 * * ? 在每天下午2点到下午2:55期间的每5分钟触发

(14) 0 0/5 14,18 * * ? 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发

(15) 0 0-5 14 * * ? 在每天下午2点到下午2:05期间的每1分钟触发

(16) 0 10,44 14 ? 3 WED 每年三月的星期三的下午2:10和2:44触发

(17) 0 15 10 ? * MON-FRI 周一至周五的上午10:15触发

(18) 0 15 10 15 * ? 每月15日上午10:15触发

(19) 0 15 10 L * ? 每月最后一日的上午10:15触发

(20) 0 15 10 ? * 6L 每月的最后一个星期五上午10:15触发

(21) 0 15 10 ? * 6L 2002-2005 2002年至2005年的每月的最后一个星期五上午10:15触发

(22) 0 15 10 ? * 6 #3 每月的第三个星期五上午10:15触发

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Vue 3是一种流行的JavaScript框架,用于构建用户界面。它并不直接涉及cron表达式的格式,因为cron表达式是用于调度任务的时间表达式,与Vue 3框架本身无关。但是,如果你在Vue 3项目中需要使用cron表达式,你可以使用第三方库来解析和处理cron表达式。 一个常见的第三方库是`cron-parser`,它可以帮助你解析和计算cron表达式。下面是一个示例,展示了如何在Vue 3项目中使用`cron-parser`库来解析cron表达式: 首先,你需要安装`cron-parser`库。可以使用npm或yarn来安装: ``` npm install cron-parser ``` 然后,在你的Vue 3组件中引入`cron-parser`库: ```javascript import CronParser from 'cron-parser'; ``` 接下来,你可以使用`CronParser.parseExpression()`方法来解析cron表达式,并获取相关的时间信息。例如: ```javascript const expression = '0 0 * * *'; // 这是一个每天凌晨执行的cron表达式 const options = { currentDate: new Date(), tz: 'Asia/Shanghai' // 设置时区 }; try { const interval = CronParser.parseExpression(expression, options); const nextExecution = interval.next().toString(); // 获取下一次执行的时间 console.log('下一次执行时间:', nextExecution); } catch (err) { console.error('解析cron表达式出错:', err); } ``` 上述代码中,我们使用`CronParser.parseExpression()`方法解析了一个cron表达式,并通过`interval.next().toString()`获取了下一次执行的时间。你可以根据自己的需求,进一步处理和利用这些时间信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值