java把日期转化为cron表达式

Java 中,如何把日期(时间点,不是时间段)转化为cron表达式呢?

我觉得这个功能是很常用的,结果在网上竟然没有找到,真实奇怪了?!

直接给代码:

 

Java代码  

  1. /*** 
  2.      *  
  3.      * @param date 
  4.      * @param dateFormat : e.g:yyyy-MM-dd HH:mm:ss 
  5.      * @return 
  6.      */  
  7.     public static String formatDateByPattern(Date date,String dateFormat){  
  8.         SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);  
  9.         String formatTimeStr = null;  
  10.         if (date != null) {  
  11.             formatTimeStr = sdf.format(date);  
  12.         }  
  13.         return formatTimeStr;  
  14.     }  
  15. /*** 
  16.      * convert Date to cron ,eg.  "0 06 10 15 1 ? 2014" 
  17.      * @param date  : 时间点 
  18.      * @return 
  19.      */  
  20.     public static String getCron(java.util.Date  date){  
  21.         String dateFormat="ss mm HH dd MM ? yyyy";  
  22.         return formatDateByPattern(date, dateFormat);  
  23.     }  

 测试:

 

 

Java代码  

  1. @Test  
  2.     public void test_getCron(){  
  3.         String cron=TimeHWUtil.getCron(new Date());  
  4.         System.out.println(cron);  
  5.     }  

 运行结果:

 

 

关于cron,请参阅:http://www.quartz-scheduler.org/documentation/quartz-2.2.x/tutorials/crontrigger

Format

A cron expression is a string comprised of 6 or 7 fields separated by white space. Fields can contain any of the allowed values, along with various combinations of the allowed special characters for that field. The fields are as follows:

Field Name Mandatory Allowed Values Allowed Special Characters

Seconds YES 0-59 , - * /
Minutes YES 0-59 , - * /
Hours YES 0-23 , - * /
Day of month YES 1-31 , - * ? / L W
Month YES 1-12 or JAN-DEC , - * /
Day of week YES 1-7 or SUN-SAT , - * ? / L #
Year NO empty, 1970-2099 , - * /

So cron expressions can be as simple as this: * * * * ? *

or more complex, like this: 0/5 14,18,3-39,52 * ? JAN,MAR,SEP MON-FRI 2002-2010

 

Examples

Here are some full examples:

**Expression** **Meaning**
0 0 12 * * ? Fire at 12pm (noon) every day
0 15 10 ? * * Fire at 10:15am every day
0 15 10 * * ? Fire at 10:15am every day
0 15 10 * * ? * Fire at 10:15am every day
0 15 10 * * ? 2005 Fire at 10:15am every day during the year 2005
0 * 14 * * ? Fire every minute starting at 2pm and ending at 2:59pm, every day
0 0/5 14 * * ? Fire every 5 minutes starting at 2pm and ending at 2:55pm, every day
0 0/5 14,18 * * ? Fire every 5 minutes starting at 2pm and ending at 2:55pm, AND fire every 5 minutes starting at 6pm and ending at 6:55pm, every day
0 0-5 14 * * ? Fire every minute starting at 2pm and ending at 2:05pm, every day
0 10,44 14 ? 3 WED Fire at 2:10pm and at 2:44pm every Wednesday in the month of March.
0 15 10 ? * MON-FRI Fire at 10:15am every Monday, Tuesday, Wednesday, Thursday and Friday
0 15 10 15 * ? Fire at 10:15am on the 15th day of every month
0 15 10 L * ? Fire at 10:15am on the last day of every month
0 15 10 L-2 * ? Fire at 10:15am on the 2nd-to-last last day of every month
0 15 10 ? * 6L Fire at 10:15am on the last Friday of every month
0 15 10 ? * 6L Fire at 10:15am on the last Friday of every month
0 15 10 ? * 6L 2002-2005 Fire at 10:15am on every last friday of every month during the years 2002, 2003, 2004 and 2005
0 15 10 ? * 6#3 Fire at 10:15am on the third Friday of every month
0 0 12 1/5 * ? Fire at 12pm (noon) every 5 days every month, starting on the first day of the month.
0 11 11 11 11 ? Fire every November 11th at 11:11am.

Pay attention to the effects of '?' and '*' in the day-of-week and day-of-month fields!

时间: 2024-11-03 12:58:04

java把日期转化为cron表达式的相关文章

QuartZ Cron表达式在java定时框架中的应用

CronTrigger CronTriggers往往比SimpleTrigger更有用,如果您需要基于日历的概念,而非SimpleTrigger完全指定的时间间隔,复发的发射工作的时间表. CronTrigger,你可以指定触发的时间表如"每星期五中午",或"每个工作日9:30时",甚至"每5分钟一班9:00和10:00逢星期一上午,星期三星期五". 即便如此,SimpleTrigger一样,CronTrigger拥有的startTime指定的时

Spring集成Quartz定时任务框架介绍和Cron表达式详解

原文地址:http://www.cnblogs.com/obullxl/archive/2011/07/10/spring-quartz-cron-integration.html 在JavaEE系统中,我们会经常用到定时任务,比如每天凌晨生成前天报表,每一小时生成汇总数据等等.我们可以使用java.util.Timer结合java.util.TimerTask来完成这项工作,但时调度控制非常不方便,并且我们需要大量的代码.使用Quartz框架无疑是非常好的选择,并且与Spring可以非常方便的

Cron表达式工具类

   Quartz调度框架里最大的亮点就是Cron表达式,他能灵活的表达任务计划周期,但由于它的语法复杂多变,要让用户去书写Cron表达式,则简直就好比要小姐从良是一样的难.所以才有了Cron表达式工具类,使用它可以通过接收一些必要参数自动输出一个标准的Cron表达式.废话不多说,亮剑看码: Java代码   package com.yida.framework.base.util.quartz;      import java.util.Date;      import com.yida.

java 关于日期的一些常用惯例

1,获取当前毫秒数 两种方式: 方式一:new Date().getTime()   方式二:System.currentTimeMillis()   2,Date 转化为Timestamp Java代码   timestamp=new Timestamp(new Date().getTime());     3,格式化: Java代码   /***       * yyyy-MM-dd HH:mm:ss       *        * @param date       * @return 

SpringBoot定时任务及Cron表达式详解

摘要: 讲解如何使用SpringBoot定时任务,并通过源码说明如何使用多线程处理各定时任务. 详细说明cron表达式用法. 一.定时任务概述 后台项目开发中经常会用到定时任务,现在实现定时任务都方式也是多种多样.下面列举几种常见的定时任务实现方式: 1. Quartz:Quartz的使用相当广泛,它是一个功能强大的调度器,当然使用起来也相对麻烦; 2. java.util包里的Timer,它也可以实现定时任务但是功能过于单一所有使用很少. 3. 就是我们今天要介绍的Spring自带的定时任务S

Spring 定时任务之 @Scheduled cron表达式

一个基于Spring boot的一个demo: Java配置中开户对Scheduled的支持 import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.annotation.EnableScheduling; @Configuration @EnableScheduling public class ScheduleConfig { } 一个定时的例子: i

Spring 定时任务Quartz,Cron表达式提示cron expression must consist of 6 fields

问题描述 我要设置定时任务,每年的6月31日执行.按照论坛上说的,cron可以设置6位或7位域.仿照规则,有表达式:@Scheduled(cron="000316?2014-2099")可是一直启动报错,提示必须6位域?网上都说可以6位或7位域啊,求解释.java.lang.IllegalArgumentException:cronexpressionmustconsistof6fields(found7in000316?2014-2099)atorg.springframework.

(2)Spring集成Quartz定时任务框架介绍和Cron表达式详解

在JavaEE系统中,我们会经常用到定时任务,比如每天凌晨生成前天报表,每一小时生成汇总数据等等.我们可以使用java.util.Timer结合java.util.TimerTask来完成这项工作,但时调度控制非常不方便,并且我们需要大量的代码.使用Quartz框架无疑是非常好的选择,并且与Spring可以非常方便的集成,下面介绍它们集成方法和Cron表达式的详细介绍. 一.增加所依赖的JAR包1.增加Spring的Maven依赖 <dependency><groupId>org.

cron-QuartZ Cron表达式 指定只执行一次。比如 2016年3月3日0点0分0秒 如何实现

问题描述 QuartZ Cron表达式 指定只执行一次.比如 2016年3月3日0点0分0秒 如何实现 QuartZ Cron表达式 貌似指定不了 某一天这一辈子执行1次那种 解决方案 你只要设置了具体日期应该就只会执行一次 0 0 0 3 3 ? 2016 至于星期几就不需要管了. 解决方案二: 楼上正解,管日不管周,管周不管日,如果日和周都写上具体值就可能会解释不通.比如:到底是星期2的1号,还是1号的星期2. 只要记住,假如你为这两域的其中一个指定了值,那就必须在另一个字值上放一个 ?,意