0


cron表达式

什么是corn表达式?

CRON 表达式 就是 由若干数字、空格、符号按一定的规则,组成的一组字符串,用来表达时间的信息。该字符串由**

6

个空格分为

7

个域**,每一个域代表一个时间含义。

cron表达式格式:**"秒域 分域 时域 日域 月域 周域 年域"** (年域可以省略,省略时表示每年)
域是否必填值以及范围通配符秒是0-59, - * /分是0-59, - * /时是0-23, - * /日是1-31, - * ? / L W月是1-12 或 JAN-DEC, - * /周是1-7 或 SUN-SAT, - * ? / L #年否1970-2099, - * /
通配符含义:

(1)** , **表示枚举值 。比如 0 0 10,14,16 * * ? 指每天上午10点,下午2点,4点都执行一次。

(2)** - **表示某个域的连续范围。比如在 “时” 这个域中定义 1-6,则表示在1到6点之间每小时都触发一次,用 , 表示 1,2,3,4,5,6。

(3)** * **表示所有值,可解读为 “每”。 比如在“日”这个域中设置 *,表示每一天都会触发。

(4)** ? ** 在cron表达式中必须出现且只能出现1次, 用在日域或周域上,表示不确定值、不限制。比如0 0 0 8 * ? 表示每月的8号触发一个操作,但不关心是周几。

(5)** / *表示起始时间和间隔时间。比如"0 0 3/5 * * ?"表示每天3点开始执行,每隔5个小时执行一次。/5 * * * * ? 表示每隔5秒钟执行一次。

(6)** L **只能用在日域或周域,用于日域表示当月的最后一天,用于周上表示周六,在L前加上数字表示最后一个周值,比如‘7L’表示本月最后一个周六 。例如:0 0 23 ? * 3L表示每月最后一个周二的23点执行。

(7)** W **表示离指定日期的最近那个工作日(周一至周五)触发,只能在 “日” 中使用。LW 指这个月的最后一个工作日。15W 表示离每月15号最近的那个工作日触发。
“ # ” 表示每月的第几个周几,只能作用于 “周” 上。例如 ”2#3” 表示在每月的第三个周二。

(8)** # **只能用于周上,周几#第几周。例如 ”2#3” 表示在每月的第三个周二。

cron表达式的生成插件 - vue-cron

这是一个cron表达式生成插件,基于vue与element-ui实现。

插件地址:vue-cron-npm (npmjs.com)

代码地址:GitHub - 1615450788/vue-cron: 这是一个cron表达式ui组件

安装:

npm install vue-cron --save

引入:

// 全局配置
import Vue from 'vue'
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css'
Vue.use(ElementUI);
 
// 在 main.js 文件里全局引入 
import VueCron from 'vue-cron'
Vue.use(VueCron);//使用方式:<vueCron></vueCron>
 
// 在相关页面文件里局部引入
import {cron} from 'vue-cron' // 使用方式:<cron></cron>

export default {
    template: '<cron/>',
    components: { cron }
}

示例:

<template>
    <div class="infoLabel">
       <label class="configTit  requiredInfo" ref="labelcron">cron表达式</label>
       <el-popover v-model="cronPopover">
           <cron @change="onChangeCron" @close="cronPopover = false ></cron>
           <el-input slot="reference" @click="cronPopover = true" v-model="cron" 
            placeholder="请输入定时策略" class="inputWidth"></el-input>
       </el-popover>
     </div>
</template>
 
<script>
import {cron} from 'vue-cron';
export default {
    components: { cron },
        data(){
            return {
                cronPopover:false,
                cron:''
            }
        },
        methods: {
            onChangeCron(val){
                this.cron=val
            },
        },
    }
</script>

效果图:

*注:这个插件目前是只可以进行操作进行勾选生成表达式。但是,不能根据表达式反显到组件上

修改插件进行反显:

在大神写的vue-cron组件的源码上进行了修改,使得支持反显。在我项目中新建了一个子组件,然后引入到使用位置。

具体代码请见:GitHub - myf1001/cronContribute to myf1001/cron development by creating an account on GitHub.https://github.com/myf1001/cron

cron表达式转化插件-cronstrue

cronstrue 是一个 JavaScript 库,解析 cron 表达式并输出可读的 cron 描述。
插件地址:GitHub - bradymholt/cRonstrue

安装:

npm install cronstrue --save

引入:

import cronstrue from "cronstrue/i18n"; 

使用:

cronstrue.toString(this.cron,{ locale: "zh_CN"})

注释:vue-cron 一周是从周日开始,所以周日是1,但是cronstrue一周是从周一开始,周一是1

如下图所示

cronstrue提供属性dayOfWeekStartIndexZero,默认为ture,修改为false就是从周日开始。

computed:{
        cronLabel(){
            if(this.formData.cron){
                return cronstrue.toString(this.cron,{ locale: "zh_CN",dayOfWeekStartIndexZero:false })
            }
        }
    },

效果图:

关于cron的分享就到这里啦,分享的同时也是给自己做个记录,如果能帮助到你,那当然是更好啦,有错误请大家友好指出,谢谢哟,笔芯❤❤❤❤❤❤❤❤


本文转载自: https://blog.csdn.net/weixin_42464106/article/details/127898578
版权归原作者 禾木白 所有, 如有侵权,请联系我们删除。

“cron表达式”的评论:

还没有评论