Cron在前端的使用,vue与element ui的vue-cron插件的使用及将定时任务cron表达式解析成中文

这篇具有很好参考价值的文章主要介绍了Cron在前端的使用,vue与element ui的vue-cron插件的使用及将定时任务cron表达式解析成中文。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

vue-cron插件的使用

安装依赖

执行下面npm命令:
npm install vue-cron --save

引用

在想使用cron的vue页面引入以下:

import VueCron from ‘vue-cron’
import Vue from ‘vue’
Vue.use(VueCron)

Vue页面

<el-col :span="12">
    <el-form-item label="同步时间" prop="execTime">
      <el-popover v-model="cronPopover">
        <vueCron @change="changeCron" @close="cronPopover=false" i18n="cn"/>
        <el-input
          slot="reference"
          v-model="ruleForm.execTime"
          placeholder="定时策略"
          @click="cronPopover=true"
        />
      </el-popover>
    </el-form-item>
  </el-col>
</el-row>

运行
cron表达式前端组件,前端总结(es6   vue   layui ),vue.js,前端,ui

去掉秒和年

在vue页面“style scoped”中通过控制样式去掉秒年

#changeContab /deep/ #tab-0 { display: none; }
#changeContab /deep/ #tab-5 { display: none; }

定时任务cron解析成中文

简易的工具类
可根据需要进行修改

import org.redisson.executor.CronExpression;
import org.springframework.util.StringUtils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

//import  org.quartz.CronExpression;

public class CornUtil {
    /**
     * 解析corn表达式,生成指定日期的时间序列
     *
     * @param cronExpression cron表达式
     * @param cronDate cron解析日期
     * @param result crom解析时间序列
     * @return 解析成功失败
     */
    public  static  boolean  parser(String cronExpression, String cronDate, List<String> result)
    {
        if  (cronExpression ==  null  || cronExpression.length() <  1  || cronDate ==  null  || cronDate.length() <  1 )
        {
            return  false ;
        }
        else
        {
            CronExpression exp =  null ;
            // 初始化cron表达式解析器
            try
            {
                exp =  new  CronExpression(cronExpression);
            }
            catch  (Exception e)
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
                return  false ;
            }

            // 定义生成时间范围
            // 定义开始时间,前一天的23点59分59秒
            Calendar c = Calendar.getInstance();
            String sStart = cronDate +  " 00:00:00" ;
            SimpleDateFormat sdf =  new  SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" );
            Date dStart =  null ;
            try
            {
                dStart = sdf.parse(sStart);
            }
            catch  (ParseException e)
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            c.setTime(dStart);
            c.add(Calendar.SECOND, - 1 );
            dStart = c.getTime();

            // 定义结束时间,当天的23点59分59秒
            c.add(Calendar.DATE,  1 );
            Date dEnd = c.getTime();

            // 生成时间序列
            Date dd = dStart;
            dd = exp.getNextValidTimeAfter(dd);
            while  ((dd.getTime() >= dStart.getTime()) && (dd.getTime() <= dEnd.getTime()))
            {
                result.add(sdf.format(dd));
                dd = exp.getNextValidTimeAfter(dd);
            }
            exp =  null ;
        }
        return  true ;
    }

    public  static  String translateToChinese(String cronExp)
    {
        if  (cronExp ==  null  || cronExp.length() <  1 )
        {
            return  "cron表达式为空" ;
        }
        CronExpression exp =  null ;
        // 初始化cron表达式解析器
        try
        {
            exp =  new  CronExpression(cronExp);
        }
        catch  (Exception e)
        {
            return  "corn表达式不正确" ;
        }
        String[] tmpCorns = cronExp.split( " " );
        StringBuffer sBuffer =  new  StringBuffer();
        if (tmpCorns.length ==  6 )
        {
            //解析月
            if (tmpCorns[ 4 ].equals( "*" ))
            {
                sBuffer.append( "每月" );
            }
            else if (tmpCorns[ 4 ].contains("/")){
                String[] str = StringUtils.split(tmpCorns[ 4 ],"/");
                String first = str[0];
                String last = str[1];
                sBuffer.append( "第" + first + "月开始每隔" + last + "月");
            }
            else
            {
                sBuffer.append(tmpCorns[ 4 ]).append( "月" );
            }
            //解析周
            if (!tmpCorns[ 5 ].equals( "*" ) && !tmpCorns[ 5 ].equals( "?" ))
            {
                if (tmpCorns[ 5 ].contains("/")){
                    String[] str = StringUtils.split(tmpCorns[ 5 ],"/");
                    String first = str[0];
                    String last = str[1];
                    switch  (first)
                    {
                        case  "1" :
                            sBuffer.append( "从星期天开始每隔" + last + "周");
                            break ;
                        case  "2" :
                            sBuffer.append( "从星期一开始每隔" + last + "周");
                            break ;
                        case  "3" :
                            sBuffer.append( "从星期二开始每隔" + last + "周");
                            break ;
                        case  "4" :
                            sBuffer.append( "从星期三开始每隔" + last + "周");
                            break ;
                        case  "5" :
                            sBuffer.append( "从星期四开始每隔" + last + "周");
                            break ;
                        case  "6" :
                            sBuffer.append( "从星期五开始每隔" + last + "周");
                            break ;
                        case  "7" :
                            sBuffer.append( "从星期六开始每隔" + last + "周");
                            break ;
                    }
                }else if (tmpCorns[ 5 ].contains("#")){
                    String[] str = StringUtils.split(tmpCorns[ 5 ],"#");
                    String first = str[0];
                    String last = str[1];
                    switch  (first)
                    {
                        case  "1" :
                            sBuffer.append( "第" + last + "个" + "星期天");
                            break ;
                        case  "2" :
                            sBuffer.append( "第" + last + "个" + "星期一");
                            break ;
                        case  "3" :
                            sBuffer.append( "第" + last + "个" + "星期二");
                            break ;
                        case  "4" :
                            sBuffer.append( "第" + last + "个" + "星期三");
                            break ;
                        case  "5" :
                            sBuffer.append( "第" + last + "个" + "星期四");
                            break ;
                        case  "6" :
                            sBuffer.append( "第" + last + "个" + "星期五");
                            break ;
                        case  "7" :
                            sBuffer.append( "第" + last + "个" + "星期六");
                            break ;
                    }
                }
                else if (tmpCorns[ 5 ].contains("L") && !tmpCorns[ 5 ].contains("W") && tmpCorns[ 5 ].toCharArray().length == 2){
                    switch  (tmpCorns[ 5 ])
                    {
                        case  "1L" :
                            sBuffer.append( "最后一个星期天" );
                            break ;
                        case  "2L" :
                            sBuffer.append( "最后一个星期一" );
                            break ;
                        case  "3L" :
                            sBuffer.append( "最后一个星期二" );
                            break ;
                        case  "4L" :
                            sBuffer.append( "最后一个星期三" );
                            break ;
                        case  "5L" :
                            sBuffer.append( "最后一个星期四" );
                            break ;
                        case  "6L" :
                            sBuffer.append( "最后一个星期五" );
                            break ;
                        case  "7L" :
                            sBuffer.append( "最后一个星期六" );
                            break ;
                    }
                }
                else {
                    String [] tmpArray =  tmpCorns[ 5 ].split(",");
                    for ( String  tmp:tmpArray)
                    {
                        switch  (tmp)
                        {
                            case  "SUN" :
                                sBuffer.append( "星期天" );
                                break ;
                            case  "MON" :
                                sBuffer.append( "星期一" );
                                break ;
                            case  "TUE" :
                                sBuffer.append( "星期二" );
                                break ;
                            case  "WED" :
                                sBuffer.append( "星期三" );
                                break ;
                            case  "THU" :
                                sBuffer.append( "星期四" );
                                break ;
                            case  "FRI" :
                                sBuffer.append( "星期五" );
                                break ;
                            case  "SAT" :
                                sBuffer.append( "星期六" );
                                break ;
                            case  "-" :
                                sBuffer.append( "至" );
                                break ;
                            default :
                                sBuffer.append(tmp);
                                break ;
                        }
                    }
                }
            }

            //解析日
            if (!tmpCorns[ 3 ].equals( "?" ))
            {
                if (tmpCorns[ 3 ].equals( "*" ))
                {
                    sBuffer.append( "每日" );
                }
                else if (tmpCorns[ 3 ].contains("/")){
                    String[] str = StringUtils.split(tmpCorns[ 3 ],"/");
                    String first = str[0];
                    String last = str[1];
                    sBuffer.append( "第" + first + "天开始每隔" + last + "天");
                }
                else if (tmpCorns[ 3 ].contains("L") && tmpCorns[ 3 ].toCharArray().length == 1){
                    sBuffer.append("最后一天");
                }
                else if (tmpCorns[ 3 ].contains("LW") && tmpCorns[ 3 ].toCharArray().length == 2){
                    sBuffer.append("最后一个工作日");
                }
                else if (tmpCorns[ 3 ].contains("L-")){
                    switch  (tmpCorns[ 3 ])
                    {
                        case  "L-1" :
                            sBuffer.append( "月底前1日" );
                            break ;
                        case  "L-2" :
                            sBuffer.append( "月底前2日" );
                            break ;
                        case  "L-3" :
                            sBuffer.append( "月底前3日" );
                            break ;
                        case  "L-4" :
                            sBuffer.append( "月底前4日" );
                            break ;
                        case  "L-5" :
                            sBuffer.append( "月底前5日" );
                            break ;
                        case  "L-6" :
                            sBuffer.append( "月底前6日" );
                            break ;
                        case  "L-7" :
                            sBuffer.append( "月底前7日" );
                            break ;
                        case  "L-8" :
                            sBuffer.append( "月底前8日" );
                            break ;
                        case  "L-9" :
                            sBuffer.append( "月底前9日" );
                            break ;
                        case  "L-10" :
                            sBuffer.append( "月底前10日" );
                            break ;
                        case  "L-11" :
                            sBuffer.append( "月底前11日" );
                            break ;
                        case  "L-12" :
                            sBuffer.append( "月底前12日" );
                            break ;
                        case  "L-13" :
                            sBuffer.append( "月底前13日" );
                            break ;
                        case  "L-14" :
                            sBuffer.append( "月底前14日" );
                            break ;
                        case  "L-15" :
                            sBuffer.append( "月底前15日" );
                            break ;
                        case  "L-16" :
                            sBuffer.append( "月底前16日" );
                            break ;
                        case  "L-17" :
                            sBuffer.append( "月底前17日" );
                            break ;
                        case  "L-18" :
                            sBuffer.append( "月底前18日" );
                            break ;
                        case  "L-19" :
                            sBuffer.append( "月底前19日" );
                            break ;
                        case  "L-20" :
                            sBuffer.append( "月底前20日" );
                            break ;
                        case  "L-21" :
                            sBuffer.append( "月底前21日" );
                            break ;
                        case  "L-22" :
                            sBuffer.append( "月底前22日" );
                            break ;
                        case  "L-23" :
                            sBuffer.append( "月底前23日" );
                            break ;
                        case  "L-24" :
                            sBuffer.append( "月底前24日" );
                            break ;
                        case  "L-25" :
                            sBuffer.append( "月底前25日" );
                            break ;
                        case  "L-26" :
                            sBuffer.append( "月底前26日" );
                            break ;
                        case  "L-27" :
                            sBuffer.append( "月底前27日" );
                            break ;
                        case  "L-28" :
                            sBuffer.append( "月底前28日" );
                            break ;
                        case  "L-29" :
                            sBuffer.append( "月底前29日" );
                            break ;
                        case  "L-30" :
                            sBuffer.append( "月底前30日" );
                            break ;
                        case  "L-31" :
                            sBuffer.append( "月底前31日" );
                            break ;
                    }
                }
                else if (tmpCorns[ 3 ].contains("W") && !tmpCorns[ 3 ].contains("L")){
                    switch  (tmpCorns[ 3 ])
                    {
                        case  "1W" :
                            sBuffer.append( "最近的工作日至本月1日" );
                            break ;
                        case  "2W" :
                            sBuffer.append( "最近的工作日至本月2日" );
                            break ;
                        case  "3W" :
                            sBuffer.append( "最近的工作日至本月3日" );
                            break ;
                        case  "4W" :
                            sBuffer.append( "最近的工作日至本月4日" );
                            break ;
                        case  "5W" :
                            sBuffer.append( "最近的工作日至本月5日" );
                            break ;
                        case  "6W" :
                            sBuffer.append( "最近的工作日至本月6日" );
                            break ;
                        case  "7W" :
                            sBuffer.append( "最近的工作日至本月7日" );
                            break ;
                        case  "8W" :
                            sBuffer.append( "最近的工作日至本月8日" );
                            break ;
                        case  "9W" :
                            sBuffer.append( "最近的工作日至本月9日" );
                            break ;
                        case  "10W" :
                            sBuffer.append( "最近的工作日至本月10日" );
                            break ;
                        case  "11W" :
                            sBuffer.append( "最近的工作日至本月11日" );
                            break ;
                        case  "12W" :
                            sBuffer.append( "最近的工作日至本月12日" );
                            break ;
                        case  "13W" :
                            sBuffer.append( "最近的工作日至本月13日" );
                            break ;
                        case  "14W" :
                            sBuffer.append( "最近的工作日至本月14日" );
                            break ;
                        case  "15W" :
                            sBuffer.append( "最近的工作日至本月15日" );
                            break ;
                        case  "16W" :
                            sBuffer.append( "最近的工作日至本月16日" );
                            break ;
                        case  "17W" :
                            sBuffer.append( "最近的工作日至本月17日" );
                            break ;
                        case  "18W" :
                            sBuffer.append( "最近的工作日至本月18日" );
                            break ;
                        case  "19W" :
                            sBuffer.append( "最近的工作日至本月19日" );
                            break ;
                        case  "20W" :
                            sBuffer.append( "最近的工作日至本月20日" );
                            break ;
                        case  "21W" :
                            sBuffer.append( "最近的工作日至本月21日" );
                            break ;
                        case  "22W" :
                            sBuffer.append( "最近的工作日至本月22日" );
                            break ;
                        case  "23W" :
                            sBuffer.append( "最近的工作日至本月23日" );
                            break ;
                        case  "24W" :
                            sBuffer.append( "最近的工作日至本月24日" );
                            break ;
                        case  "25W" :
                            sBuffer.append( "最近的工作日至本月25日" );
                            break ;
                        case  "26W" :
                            sBuffer.append( "最近的工作日至本月26日" );
                            break ;
                        case  "27W" :
                            sBuffer.append( "最近的工作日至本月27日" );
                            break ;
                        case  "28W" :
                            sBuffer.append( "最近的工作日至本月28日" );
                            break ;
                        case  "29W" :
                            sBuffer.append( "最近的工作日至本月29日" );
                            break ;
                        case  "30W" :
                            sBuffer.append( "最近的工作日至本月30日" );
                            break ;
                        case  "31W" :
                            sBuffer.append( "最近的工作日至本月31日" );
                            break ;
                    }
                }
                else
                {
                    sBuffer.append(tmpCorns[ 3 ]).append( "日" );
                }
            }

            //解析时
            if (tmpCorns[ 2 ].equals( "*" ))
            {
                sBuffer.append( "每时" );
            }
            else if (tmpCorns[ 2 ].contains("/")){
                String[] str = StringUtils.split(tmpCorns[ 2 ],"/");
                String first = str[0];
                String last = str[1];
                sBuffer.append( "第" + first + "时开始每隔" + last + "时");
            }
            else
            {
                sBuffer.append(tmpCorns[ 2 ]).append( "时" );
            }

            //解析分
            if (tmpCorns[ 1 ].equals( "*" ))
            {
                sBuffer.append( "每分" );
            }
            else if (tmpCorns[ 1 ].contains("/")){
                String[] str = StringUtils.split(tmpCorns[ 1 ],"/");
                String first = str[0];
                String last = str[1];
                sBuffer.append( "第" + first + "分开始每隔" + last + "分");
            }
            else
            {
                sBuffer.append(tmpCorns[ 1 ]).append( "分" );
            }

            //解析秒
            /*if (!tmpCorns[ 0 ].equals( "*" ))
            {
                sBuffer.append(tmpCorns[ 0 ]).append( "秒" );
            }
            else
            {
                sBuffer.append( "每秒" );
            }*/
        }

        return  sBuffer.toString();

    }

    //测试方法
//    public  static  void  main(String[] args)
//    {
//        String CRON_EXPRESSION =  "01 * * 2L * ?" ;
//        // 生成指定日期的CRON时间序列
//        String CRON_DATE =  "2016-04-26" ;
//        System.out.println(CRON_EXPRESSION);
//        System.out.println(translateToChinese(CRON_EXPRESSION));
//
//        List<String> lTime =  new  ArrayList<String>();
//        if (!parser(CRON_EXPRESSION, CRON_DATE, lTime)){
//            System.out.println( "无法生成Cron表达式:日期," +CRON_DATE+ ";不符合规则cron表达式:" +CRON_EXPRESSION);
//        }
//        for ( int  i= 0 ;i<lTime.size();i++){
//            System.out.println(lTime.get(i));
//        }
//
//    }
}

该插件存在的一个缺陷

cron表达式前端组件,前端总结(es6   vue   layui ),vue.js,前端,ui
如图中生成的cron表达式 * * * 1L * ? * 是错误的表达式,应为 * * * ? * 1L *才对

参考:

 public static void main(String[] args){
        String execTime = "* * * 1L * ?";
        String resultString = "";
        String[] str = execTime.split(" ");
        if((str[3].equalsIgnoreCase("1L")  || str[3].equalsIgnoreCase("2L")  || str[3].equalsIgnoreCase("3L")  || str[3].equalsIgnoreCase("4L")  || str[3].equalsIgnoreCase("5L")  || str[3].equalsIgnoreCase("6L")|| str[3].equalsIgnoreCase("7L")) && str[5].equalsIgnoreCase("?")){
            str[5] = str[3];
            str[3] = "?";
            for (String s : str) {
                resultString += s+" ";
            }
            System.out.println(resultString.substring(0,execTime.length()));
        }
    }

输出:* * * ? * 1L文章来源地址https://www.toymoban.com/news/detail-665823.html

到了这里,关于Cron在前端的使用,vue与element ui的vue-cron插件的使用及将定时任务cron表达式解析成中文的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 一次讲清楚Linux Cron和 Spring Cron

    定时任务是我们日常开发中经常用到的一个功能点,无论是Linux服务器上Crontab还是Spring task schedule,都会使用到cron表达式去实现定时任务的配置。不过,一定要注意,Linux cron表达式和Spring的cron表达式不一样,下面来一次讲清楚。 一,Linux cron表达式 1,长度: 5 位 (中间有一

    2024年02月11日
    浏览(40)
  • vue前端直接使用element-ui的upload组件上传到阿里云OSS存储

    因为公司的服务器比较拉吧,所以老大决定将数据文件等上传到阿里云服务器,通过ali-oss方式,这样的话读取文件也比较快  (能看到这说明什么安装element-ui都会了,我就不详细介绍了,直接跳过)  在执行下面操作之前,你要确定你的阿里云能看到上边这个页面   这里主

    2024年02月10日
    浏览(60)
  • 【小项目】微信定时推送天气预报Github项目使用及原理介绍-包含cron、天气预报、常用api...

    一、资料链接 1、github地址 https://github.com/qq1534774766/wx-push 2、教程地址 https://blog.csdn.net/qq15347747/article/details/126521774 3、易客云API(自动发送天气) https://yikeapi.com/account/index 4、apispace-各种接口(名人名言) https://www.apispace.com/console/api?orgId=6356 5、微信公众平台 https://mp.weixin.qq.com/d

    2024年02月02日
    浏览(42)
  • 优化VUE Element UI的上传插件

    默认ElmentUI的文件列表只有一个删除按钮,我需要加预览、下载、编辑等,就需要优化显示结果。 优化后没用上传进度条,又加了一个进度条效果 代码

    2024年02月09日
    浏览(43)
  • cron表达式 详解

    corn表达式是: 由若干数字、空格、符号按一定的规则,组成的一组字符串,从而表达时间的信息。 好像和正则表达式有点类似哈,都是一个字符串表示一些信息。 Cron 表达式生成器: Smart Tools - 智能工具箱 Cron 表达式是一个具有时间含义的字符串,字符串以 5 或 6 个空格隔

    2024年02月04日
    浏览(30)
  • golang-定时任务cron

    服务器开发的过程中,经常遇到需要设置定时任务的情况。本文将探讨使用golang的cron包设置定时任务,你将收获cron表达式的使用,cron函数的使用,设置定时任务的场景 设定定时任务最重要的一环就是对定时的设置,cron中对定时的设置采取cron表达式 在线cron表达式生成器:

    2024年02月10日
    浏览(48)
  • Cron 选择器

    2024年02月16日
    浏览(25)
  • linux-系统定时任务cron

    cron是linux系统中以后台进程模式周期性地执行命令或指定程序任务地服务软件。默认安装完linux系统之后,cron服务软件便会启动,服务对应的进程名字为crond。corn服务会定期(默认每分钟检查一次)检查系统中是否有需要执行的任务工作计划。 cron工具对应的crontab命令依赖于

    2024年04月12日
    浏览(42)
  • 【SpringBoot笔记】定时任务(cron)

    定时任务就是在固定的时间执行某个程序,闹钟的作用。 1.在启动类上添加注解 2.创建定时任务类 在这个类里面使用表达式设置什么时候执行 cron 表达式(也叫七子表达式),设置执行规则 在线生成 cron 表达式工具:在线Cron表达式生成器 比如每隔 5 秒执行一次  比如每天凌

    2024年02月13日
    浏览(65)
  • ​Vue + Element UI前端篇(二):Vue + Element 案例 ​

    打开 Visual Studio Code,File -- add Folder to Workspace,导入我们的项目。 安装依赖 Element 是国内饿了么公司提供的一套开源前端框架,简洁优雅,提供了 vue、react、angular 等多个版本,我们这里使用 vue 版本来搭建我们的界面。 访问:http://element-cn.eleme.io/#/zh-CN/component/installation ,官

    2024年02月09日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包