java 中,如何把日期(时间点,不是时间段)转化为cron表达式呢?
我觉得这个功能是很常用的,结果在网上竟然没有找到,真是奇怪了?!
直接给代码:
/*** * * @param date * @param dateFormat : e.g:yyyy-MM-dd HH:mm:ss * @return */ public static String formatDateByPattern(Date date,String dateFormat){ SimpleDateFormat sdf = new SimpleDateFormat(dateFormat); String formatTimeStr = null; if (date != null) { formatTimeStr = sdf.format(date); } return formatTimeStr; } /*** * convert Date to cron ,eg. "0 06 10 15 1 ? 2014" * @param date : 时间点 * @return */ public static String getCron(java.util.Date date){ String dateFormat="ss mm HH dd MM ? yyyy"; return formatDateByPattern(date, dateFormat); }
测试:
@Test public void test_getCron(){ String cron=TimeHWUtil.getCron(new Date()); System.out.println(cron); }
运行结果:
关于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:
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!
TimeHWUtil 源代码如下package com.time.util; import com.common.bean.TimeLong; import com.common.util.ReflectHWUtils; import com.common.util.SystemHWUtil; import com.string.widget.util.ValueWidget; import java.sql.Timestamp; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.List; import java.util.Locale; import java.util.regex.Pattern; /*** * http://hw1287789687.iteye.com/blog/2225264 * @author huangweii * 2015年7月26日 */ public class TimeHWUtil { /*** * yyyy-MM-dd HH:mm:ss */ public static final String yyyyMMddHHmmss = "yyyy-MM-dd HH:mm:ss"; public static final String YYYYMMDDHHMM = "yyyy-MM-dd HH:mm"; public static final String YYYYMMDDHHMM_ZH = "yyyy年MM月dd HH点mm分"; public static final String YYYYMMDDHHMMSS_ZH="yyyy年MM月dd日 HH点mm分ss秒"; public static final String yyyyMMdd = "yyyy-MM-dd"; /*** * 没有中划线 */ public static final String YYYYMMDD_NO_LINE = "yyyyMMdd"; public static final String YYYYMMDD_WITH_DOT = "yyyy.MM.dd"; private TimeHWUtil() { throw new Error("Don't let anyone instantiate this class."); } /*** * yyyy-MM-dd HH:mm:ss * * @param timestamp * @return */ public static String formatDateTime(Timestamp timestamp) {// format date // ,such as SimpleDateFormat sdf = new SimpleDateFormat(yyyyMMddHHmmss); String formatTimeStr = null; if(ValueWidget.isNullOrEmpty(timestamp)){ /* 如果没有传参数timestamp,则默认为当前时间*/ timestamp=new Timestamp(new Date().getTime()); } if (timestamp != null) { formatTimeStr = sdf.format(timestamp); } return formatTimeStr; } /** * * @param Millisecond :毫秒数 * @return */ public static String formatDateTime(long Millisecond) { Timestamp timestamp=new Timestamp(Millisecond); return formatDateTime(timestamp); } /*** * yyyy-MM-dd HH:mm:ss * * @param date * @return */ public static String formatDateTime(Date date) {// format date ,such as SimpleDateFormat sdf = new SimpleDateFormat(yyyyMMddHHmmss); String formatStr = null; if(ValueWidget.isNullOrEmpty(date)){ /*若没有传递参数,则默认为当前时间*/ date=new Date(); } if (date != null) { formatStr = sdf.format(date); } return formatStr; } /*** * 格式化当前时间,格式为:yyyy-MM-dd HH:mm:ss * @return */ public static String formatDateTime() { return formatDateTime(null); } /*** * yyyy-MM-dd * * @param timestamp * @return */ public static String formatDate(Timestamp timestamp) {// format date ,such // as SimpleDateFormat sdf = new SimpleDateFormat(yyyyMMdd); String formatTimeStr = null; if(ValueWidget.isNullOrEmpty(timestamp)){ /* 如果没有传参数timestamp,则默认为当前时间*/ timestamp=new Timestamp(new Date().getTime()); } if (timestamp != null) { formatTimeStr = sdf.format(timestamp); } return formatTimeStr; } /*** * yyyy-MM-dd * * @param date * @return */ public static String formatDate(Date date) {// format date ,such as SimpleDateFormat sdf = new SimpleDateFormat(yyyyMMdd); String formatTimeStr = null; if(ValueWidget.isNullOrEmpty(date)){ /*若没有传递参数,则默认为当前时间*/ date=new Date(); } if (date != null) { formatTimeStr = sdf.format(date); } return formatTimeStr; } public static String formatDateZh(Date date) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日"); String formatTimeStr = null; if(ValueWidget.isNullOrEmpty(date)){ /*若没有传递参数,则默认为当前时间*/ date=new Date(); } if (date != null) { formatTimeStr = sdf.format(date); } return formatTimeStr; } public static String formatDateZh(Timestamp timestamp) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日"); String formatTimeStr = null; if(ValueWidget.isNullOrEmpty(timestamp)){ /* 如果没有传参数timestamp,则默认为当前时间*/ timestamp=new Timestamp(new Date().getTime()); } if (timestamp != null) { formatTimeStr = sdf.format(timestamp); } return formatTimeStr; } /** * * @param formatStr * format : yyyy-MM-dd HH:mm:ss * @return * @throws ParseException */ public static Timestamp getTimestamp4Str(String formatStr) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat(yyyyMMddHHmmss); return new Timestamp(sdf.parse(formatStr).getTime()); } /** * * @param date * format : yyyy-MM-dd HH:mm:ss * @return */ public static Timestamp getTimestamp4Date(Date date) { if (date == null) { date = new Date(); } return new Timestamp(date.getTime()); } public static Date getDate4Str(String formatStr) throws ParseException { String format=null; if(formatStr.length()>10){ format=yyyyMMddHHmmss; }else{ format=yyyyMMdd; } SimpleDateFormat sdf = new SimpleDateFormat(format); return sdf.parse(formatStr); } public static Date getUSDate4Str(String dateStr){ SimpleDateFormat sdf = new SimpleDateFormat("MMM d HH:mm:ss", Locale.US); try { Date date= sdf.parse(dateStr); return date; } catch (ParseException e) { e.printStackTrace(); } return null; } /*** * format : yyyy年MM月dd日 HH点mm分ss秒 * * @param timestamp * @return */ public static String formatTimestampZH(Timestamp timestamp) { if(ValueWidget.isNullOrEmpty(timestamp)){ /* 如果没有传参数timestamp,则默认为当前时间*/ timestamp=new Timestamp(new Date().getTime()); } SimpleDateFormat sdf = new SimpleDateFormat(YYYYMMDDHHMMSS_ZH); return sdf.format(timestamp); } public static String formatDateTimeZH(Date date) { if(ValueWidget.isNullOrEmpty(date)){ /*若没有传递参数,则默认为当前时间*/ date=new Date(); } SimpleDateFormat sdf = new SimpleDateFormat(YYYYMMDDHHMMSS_ZH); return sdf.format(date); } /** * 比较是否过期 true:过期,不能正常使用 <br>false:正常使用 * * @param timestamp * @return */ public static boolean compareToTimestamp(Timestamp timestamp) { return timestamp.before(new java.util.Date()); } /** * 比较是否过期 true:过期,不能正常使用 <br>false:正常使用 * * @param date * : java.util.Date * @return */ public static boolean compareToDate(Date date) { return date.before(new java.util.Date()); } public static Timestamp getTimestampAfter(Date d, int day) { Calendar now = Calendar.getInstance(); now.setTime(d); now.set(Calendar.DATE, now.get(Calendar.DATE) + day); return new Timestamp(now.getTimeInMillis()); } // public static java.util.Date getDateAfter(Date d, int day) // { // Calendar now = Calendar.getInstance(); // now.setTime(d); // now.set(Calendar.DATE, now.get(Calendar.DATE) + day); // return now.getTime(); // } public static Timestamp getTimestampBefore(Date d, int day) { Calendar now = Calendar.getInstance(); now.setTime(d); now.set(Calendar.DATE, now.get(Calendar.DATE) - day); return new Timestamp(now.getTimeInMillis()); } /*** * * @param d * :Base Date * @param minutes * :Minutes delayed * @return */ public static java.util.Date getDateAfterMinute(Date d, int minutes) { Calendar now = Calendar.getInstance(); now.setTime(d); now.set(Calendar.MINUTE, now.get(Calendar.MINUTE) + minutes); return now.getTime(); } /*** * * @param d : 基准日期 * @param day : 几天前 * @return * @throws ParseException */ public static java.util.Date getDateBefore(String d, int day) throws ParseException { java.util.Date date=getDate4Str(d); return getDateBefore(date, day); } /*** * * @param d : 基准时间 * @param day : 几天前 * @return */ public static java.util.Date getDateBefore(Date d, int day) { Calendar now = Calendar.getInstance(); now.setTime(d); now.set(Calendar.DATE, now.get(Calendar.DATE) - day); return now.getTime(); } /*** * * @param second : 秒 * @return */ public static java.util.Date getDateBySecond(long second){ Date date=new Date(second*1000); return date; } /*** * 返回秒(不是毫秒) * @param d * @param day * @return */ public static long getSecondBefore(Date d, int day) { return getDateBefore(d, day).getTime()/1000; } /*** * * @param d : 基准时间 * @param day * @return * @throws ParseException */ public static long getSecondBefore(String d, int day) throws ParseException { java.util.Date date=getDate4Str(d); return getDateBefore(date, day).getTime()/1000; } public static java.util.Date getDateBeforeMinute(Date d, int minutes) { Calendar now = Calendar.getInstance(); now.setTime(d); now.set(Calendar.MINUTE, now.get(Calendar.MINUTE) - minutes); return now.getTime(); } /*** * * @param d * @param hour : 小时 * @return */ public static java.util.Date getDateBeforeHour(Date d, int hour) { Calendar now = Calendar.getInstance(); now.setTime(d); now.set(Calendar.HOUR, now.get(Calendar.HOUR) - hour); return now.getTime(); } /** * get current datetime * * @return */ public static Timestamp getCurrentTimestamp() { return new Timestamp(System.currentTimeMillis()); } /*** * 获取当前时间,并且格式化为"yyyy-MM-dd HH:mm:ss" * @return */ public static String getCurrentFormattedTime(){ return formatDateTime(new Date()); } /*** * * @return : 当前时间的毫秒数 */ public static long getCurrentTimeLong(){ return new Date().getTime(); } /*** * * @return : 当前时间的秒数 */ public static long getCurrentTimeSecond(Date date){ if(ValueWidget.isNullOrEmpty(date)){ date=new Date(); } return date.getTime()/1000; } /*** * 当前时间的秒数 * @return */ public static long getCurrentTimeSecond(){ return getCurrentTimeSecond(null); } /*** * Get current sql data * @return */ public static java.sql.Date getCurrentSQLDate(){ return new java.sql.Date(System.currentTimeMillis()); } public static Calendar getCalendar() { Calendar c = Calendar.getInstance(); return c; } public static Calendar getCalendar(Date date) { Calendar c = Calendar.getInstance(); if(ValueWidget.isNullOrEmpty(date)){ date=new Date(); } c.setTime(date); return c; } /*** * _yy_MM_dd_HH_mm_ss_ * * @param date * @return */ public static String formatTimestamp2(Date date) {// format date ,such as SimpleDateFormat sdf = new SimpleDateFormat("_yy_MM_dd_HH_mm_ss_"); String formatTimeStr = null; if (date != null) { formatTimeStr = sdf.format(date); } return formatTimeStr; } /*** * * @param d * :Base Date * @param day * :Delayed days * @return */ public static java.util.Date getDateAfter(Date d, int day) { Calendar now = Calendar.getInstance(); now.setTime(d); now.set(Calendar.DATE, now.get(Calendar.DATE) + day); return now.getTime(); } public static java.util.Date getDateAfterByYear(Date d, int year) { Calendar now = Calendar.getInstance(); now.setTime(d); now.set(Calendar.YEAR, now.get(Calendar.YEAR) + year); return now.getTime(); } /*** * 以月为单位 * @param d * @param month * @return */ public static java.util.Date getDateAfterByMonth(Date d, int month) { Calendar now = Calendar.getInstance(); now.setTime(d); now.set(Calendar.MONTH, now.get(Calendar.MONTH) + month); return now.getTime(); } /*** * 以小时为单位 * @param d * @param hour * @return */ public static java.util.Date getDateAfterByHour(Date d, int hour) { Calendar now = Calendar.getInstance(); now.setTime(d); now.set(Calendar.HOUR, now.get(Calendar.HOUR) + hour); return now.getTime(); } public static java.util.Date getDateAfterByHour(String dateStr, int hour) throws ParseException { Date d = getDate4Str(dateStr); return getDateAfterByHour(d, hour); } /** * * Determine whether date is valid, including the case of a leap year * * @param date * YYYY-mm-dd * @return */ public static boolean isDate(String date) { StringBuffer reg = new StringBuffer( "^((\\d{2}(([02468][048])|([13579][26]))-?((((0?"); reg.append("[13578])|(1[02]))-?((0?[1-9])|([1-2][0-9])|(3[01])))"); reg.append("|(((0?[469])|(11))-?((0?[1-9])|([1-2][0-9])|(30)))|"); reg.append("(0?2-?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][12"); reg.append("35679])|([13579][01345789]))-?((((0?[13578])|(1[02]))"); reg.append("-?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))"); reg.append("-?((0?[1-9])|([1-2][0-9])|(30)))|(0?2-?((0?["); reg.append("1-9])|(1[0-9])|(2[0-8]))))))"); Pattern p = Pattern.compile(reg.toString()); return p.matcher(date).matches(); } /*** * 20150705 * * @param dateStr * @return */ public static boolean isShortDate(String dateStr) { boolean isRegexRight = dateStr.matches("[\\d]{8}"); if (!isRegexRight) { return false; } Date date = parseDateByPattern(dateStr, YYYYMMDD_NO_LINE); if (date == null) { return false; } return true; } /*** * format Date * * @param date * @param formatString * @return */ public static String formatDate(Date date, String formatString) { try { SimpleDateFormat format = new SimpleDateFormat(formatString); return format.format(date); } catch (Exception ex) { return ""; } } public static String formatTimestamp_noSecond(Timestamp timestamp) {// format // date // ,such // as SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); String formatTimeStr = null; if (timestamp != null) { formatTimeStr = sdf.format(timestamp); } return formatTimeStr; } public static String formatTimestampShortStr(Timestamp timestamp) {// format // date // ,such // as SimpleDateFormat sdf = new SimpleDateFormat(yyyyMMdd); String formatTimeStr = null; if (timestamp != null) { formatTimeStr = sdf.format(timestamp); } return formatTimeStr; } public static String formatDateShortZh(Timestamp timestamp) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日"); String formatTimeStr = null; if (timestamp != null) { formatTimeStr = sdf.format(timestamp); } return formatTimeStr; } public static String formatDateShortZh(Date date) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日"); String formatTimeStr = null; if (date != null) { formatTimeStr = sdf.format(date); } return formatTimeStr; } /*** * "yyyy-MM-dd" * @param date * @return */ public static String formatDateShortEN(Date date) { SimpleDateFormat sdf = new SimpleDateFormat(yyyyMMdd); String formatTimeStr = null; if (date != null) { formatTimeStr = sdf.format(date); } return formatTimeStr; } public static String formatDateZhAll(Date date) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); String formatTimeStr = null; if (date != null) { formatTimeStr = sdf.format(date); } return formatTimeStr; } /*** * 获取当前的时间 * @return : 格式化之后的字符串,例如"2015-06-20 11:07:35" */ public static String getCurrentDateTime(){ return formatDateTime(new Date()); } public static String getMiniuteSecond(Date date) { SimpleDateFormat sdf = new SimpleDateFormat("mm:ss"); String formatTimeStr = null; if(ValueWidget.isNullOrEmpty(date)){ date=new Date(); } if (date != null) { formatTimeStr = sdf.format(date); } return formatTimeStr; } public static String getMiniuteSecondZH(Date date) { SimpleDateFormat sdf = new SimpleDateFormat("mm分ss秒"); String formatTimeStr = null; if (date != null) { formatTimeStr = sdf.format(date); } return formatTimeStr; } public static String getCurrentMiniuteSecond() { Date date=new Date(); return getMiniuteSecond(date); } public static String getCurrentMiniuteSecondZH() { Date date=new Date(); return getMiniuteSecondZH(date); } /*** * * @param date * @param dateFormat : e.g:yyyy-MM-dd HH:mm:ss * @return */ public static String formatDateByPattern(Date date,String dateFormat){ SimpleDateFormat sdf = new SimpleDateFormat(dateFormat); String formatTimeStr = null; if (date != null) { formatTimeStr = sdf.format(date); } return formatTimeStr; } /*** * * @param dateStr * @param dateFormat * @return */ public static Date parseDateByPattern(String dateStr,String dateFormat){ SimpleDateFormat sdf = new SimpleDateFormat(dateFormat); try { return sdf.parse(dateStr); } catch (ParseException e) { e.printStackTrace(); } return null; } /*** * convert Date to cron ,eg. "0 06 10 15 1 ? 2014" * @param date : 时间点 * @return */ public static String getCron(java.util.Date date){ String dateFormat="ss mm HH dd MM ? yyyy"; return formatDateByPattern(date, dateFormat); } /*** * 两个日期相差多少秒 * * @param date1 : 建议大于 date2 * @param date2 * @return */ public static int getTimeDelta(Date date1, Date date2) { long timeDelta = (date1.getTime() - date2.getTime()) / 1000;//单位是秒 int secondsDelta = timeDelta > 0 ? (int) timeDelta : (int) Math.abs(timeDelta); return secondsDelta; } /*** * 两个日期相差多少秒 * * @param date1 * @param date2 * @return */ public static int getSecondDelta(Date date1,Date date2){ long timeDelta=(date1.getTime()-date2.getTime())/1000;//单位是秒 int secondsDelta=timeDelta>0?(int)timeDelta:(int)Math.abs(timeDelta); return secondsDelta; } /*** * 两个日期相差多少秒 * @param dateStr1 :yyyy-MM-dd HH:mm:ss * @param dateStr2 :yyyy-MM-dd HH:mm:ss * @return */ public static int getSecondDelta(String dateStr1,String dateStr2){ Date date1=parseDateByPattern(dateStr1, yyyyMMddHHmmss); Date date2=parseDateByPattern(dateStr2, yyyyMMddHHmmss); return getSecondDelta(date1, date2); } /*** * 两个日期相差多少秒 * @param dateStr1 * @param date2 * @return */ public static int getSecondDelta(String dateStr1,Date date2){ Date date1=parseDateByPattern(dateStr1, yyyyMMddHHmmss); return getSecondDelta(date1, date2); } /*** * convert "2014-05-30T19:00:00" to "2014-05-30 19:00:00" * @param input * @return */ public static String formatJsonDate(String input){ String result=input.replaceAll("([\\d]{4}-[\\d]{1,2}-[\\d]{1,2})[ \tTt]([\\d]{1,2}:[\\d]{1,2}:[\\d]{1,2})", "$1 $2"); return result; } /*** * 转换日期,把秒转换为日期 * @param second : 秒 * @return */ public static String formatSecondTime(Long second){ if(second==null||second==0){ return SystemHWUtil.EMPTY; } Date date=new Date(second*1000); return TimeHWUtil.formatDate(date, TimeHWUtil.YYYYMMDDHHMM); } /*** * 格式化日期,把秒数转为日期 * @param list * @param columnName * @param transientColumn : 已格式化的日期 * @throws SecurityException * @throws NoSuchFieldException * @throws IllegalArgumentException * @throws IllegalAccessException */ public static void formatTime(List list,String columnName,String transientColumn) throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException{ int size=list.size(); for(int i=0;i<size;i++){ Object obj=list.get(i); Object val=ReflectHWUtils.getObjectValue(obj, columnName); if(val==null){ continue; } Long timeValue=(Long)val ; ReflectHWUtils.setObjectValue(obj, transientColumn,TimeHWUtil.formatSecondTime(timeValue)); } } /*** * 返回人性化可读的时长 * @param time : 秒 * @return */ public static TimeLong getTimeLong(long time){ TimeLong timeLong=new TimeLong(); long secondRemaining=time%86400; int days=(int) (time/86400); int hour=(int) (secondRemaining/(60*60)); secondRemaining=secondRemaining%(60*60); int minutes=(int) (secondRemaining/60); int second=(int) (secondRemaining%60); // System.out.println("day:"+days); // System.out.println("hour:"+hour); // System.out.println("minutes:"+minutes); // System.out.println("second:"+second); timeLong.setDay(days); timeLong.setHour(hour); timeLong.setMinute(minutes); timeLong.setSecond(second); return timeLong; } /*** * @param date1 * @param date2 * @return : TimeLong */ public static TimeLong getDeltaDate(Date date1, Date date2) { int second = getTimeDelta(date1, date2); TimeLong timeLong = getTimeLong(second); return timeLong; } /*** * 从当前时间算,离 endTime还剩下多少时间 * * @param endTime * @return : 天 */ public static int getDeltaDate(Date endTime) { Date date2 = getCurrentTimestamp(); return getDeltaDate(endTime, date2).getDay(); } public void test_002(){ String now="2014-02-25"; String endTime="2014-01-25"; if(now.compareTo(endTime)==1){//大于 System.out.println("过期"); }else{ System.out.println("还没有过期"); } } }
相关推荐
2. **解析逻辑**:Java程序需要能够将用户输入的字符串转换为Cron表达式对象,这通常涉及对字符串的验证和解析。可以自定义一个解析器类,处理每个字段的特殊语法。 3. **双向绑定**:界面到表达式和表达式到界面的...
cron表达式是Unix/Linux系统中用于定时任务调度的一种机制,而在Java中,通过Quartz、Spring框架等库,也可以使用cron表达式来实现定时任务。本项目提供的"Cron表达式生成器java版"是一个基于Java 1.8的工具,能够...
在Java中,我们可能需要一个工具类来处理Cron表达式,例如将其转换为Java的`ScheduledFuture`对象,或者验证一个给定的字符串是否符合Cron表达式的格式。这个类可能会包含如`parseCronExpression`、`...
3. 时间和日期处理:理解和解析Cron表达式需要对JavaScript的时间和日期对象有深入理解,以便将Cron表达式转化为可执行的任务计划。 4. UI设计:创建一个友好的用户界面,让用户能直观地设置Cron表达式,例如通过...
- 可能包含一些实用工具,比如将Cron表达式转换为人类可读的描述,或者反过来。 这个插件对于需要频繁设置和管理定时任务的开发人员和运维人员来说,无疑是一个强大的助手,能够节省大量时间和精力,提高工作效率。...
例如,创建一组下拉菜单或时间选择器,用户选定后,JavaScript代码会将这些选择转换为Cron表达式。 **3. 在JSP中处理Cron表达式** JSP作为服务器端脚本语言,可以处理用户在HTML页面上提交的Cron表达式。例如,用户...
这个工具的实现可能涉及对cron表达式的解析、验证以及转换为用户友好的形式,同时需要考虑跨平台兼容性和性能优化。对于开发者来说,这样的工具大大简化了定时任务的配置工作,提高了工作效率。
2. 表达式解析器:将用户的输入转换为有效的Cron表达式字符串。 3. 反解析器:将Cron表达式解析回用户可读的时间间隔描述。 4. 预览功能:显示Cron表达式所对应的下次执行时间,以及周期性的执行时间序列,帮助用户...
在Java开发中,Cron表达式也经常被用于Spring框架的定时任务调度。这个"Cron表达式生成工具"可能是用来帮助开发者更加便捷地创建和理解这些复杂的表达式。 Cron表达式由6或7个由空格分隔的字段组成,每个字段代表...
这可能是网上最完整的Cron表达式解析翻译方法。 JavaScript版-解释翻译Cron表达式(代码奉上)。 此方法分为JavaScript版和Java版本,有需要的朋友请根据自己需要下载。 希望我写的方法有帮助到你,不足之处请多多...
1. **解析**:将Cron表达式转换成可理解的结构,以便进一步处理。 2. **校验**:检查表达式是否符合Cron的语法规则。 3. **计算下次执行时间**:根据当前时间和Cron表达式计算出下一次任务应该执行的时间。 4. **...
Nlp2cron是一款功能强大的工具包,专门用于将自然语言转换为cron表达式。这个工具包不仅可以帮助对话机器人实现定时任务功能,还可以在日常开发中用于识别和生成cron表达式。通过Nlp2cron,用户可以简单快捷地输入...
1、Cron表达式解析(比如Quartz的Cron表达式),计算下一次触发时间; 2、经常使用的时间相关的操作工具类,比如时间格式化,字符串、Date、localDate、LocalDateTime类型间的转换等
在这个项目中,我们讨论的是一个特定的工具包,它允许开发者将自然语言转化为cron表达式。cron表达式是Unix/Linux系统中用于设置周期性任务的字符串格式,而自然语言则是人们日常交流所使用的普通语言。这个工具包的...
Cron表达式的组成部分包括6个或7个字段(从左到右):秒、分、小时、日、月中的日期、月份和星期。每个字段可以是具体值、通配符(*)、范围或列表。例如,“0 0 12 * * ?”表示每天的12点整执行任务。生成器将这些...
该工具包名为NLP2Cron,采用Purebasic和Java混合编程...NLP2Cron能够将自然语言指令转换成cron表达式,适用于对话机器人定时任务和日常开发中的cron表达式识别,例如将“每15分钟一次”转换成“0 0/15 * * * ? *”。
基于Java实现的将自然语言转换为cron表达式的工具包,可用于对话机器人的定时任务以及平常开发中的cron表达式识别原理实现原理为一个简易版本的seq2seq模型,对应的模型架构图如下:1.直接使用全局向量编码进行预测2...
总结来说,`CronExpParserUtil`是针对cron表达式解析的实用工具,它将难以理解的cron表达式转化为中文描述,方便团队成员快速掌握定时任务的执行计划,进一步提升了工作效率。在实际开发中,类似的辅助工具对于提升...
Quartz定时器在使用时,需要Cron表达式,但是人为去写需要对表达式的规则足够了解,但有了该表达式生成器只需要选择对应的“执行”时间就可以快速生成符合你要求的表达式啦。
用法match方法接受两个参数: cron表达式日期(或可以转换为日期的内容) const cronmatch = require ( 'cronmatch' )// If the minute of the current time is divisible by 5, do somethingif ( cronmatch ....