public class ZCron extends Object
| 限定符和类型 | 方法和说明 |
|---|---|
static <T> T[] |
compact(T[] array)
让数组更紧凑
这个函数可以配合 fill 来使用, fill 过的数组有些元素为 null
为了能紧凑显示,本函数去掉所有 null 元素,但是同时数组的下标信息就丢失了 如果不想丢失下标信息并且还想紧凑表达 请用 compactAll |
static <T> ArrayList<CronObj<T>> |
compactAll(T[] array)
让数组更紧凑,并保留下标信息
|
<T> void |
each(T[] array,
CronEach<T> callback,
Calendar c) |
<T> void |
each(T[] array,
CronEach<T> callback,
Calendar c,
int off,
int len,
int unit)
本函数用来迭代一个目标数组
你的数组最多可以是 86400 的元素,对应一天中的每一秒,
根据你给定的日期,本函数来决定具体哪个一数组项目要被执行回调 当然,如果你给定日期不能匹配表达式,本函数会直接跳过执行,如果你不给定日期,则本函数一定会执行 关于数组的长度涉及到一个时间的缩放问题,NutzCron 实际上是声明了一天中的一系列启动点 这些点,我们可以用秒来表示,从 0-86399 分别表示一天中的任何一秒。 |
<T> void |
each(T[] array,
CronEach<T> callback,
Date d) |
<T> void |
each(T[] array,
CronEach<T> callback,
String ds) |
<T> T[] |
fill(T[] array,
T obj,
Calendar c) |
<T> T[] |
fill(T[] array,
T obj,
Calendar c,
int off,
int len,
int unit)
本函数用来填充数组
它将调用 each 函数,填充数组中的匹配项。
|
<T> T[] |
fillBy(T[] array,
T obj,
Date d) |
<T> T[] |
fillBy(T[] array,
T obj,
long ms) |
<T> T[] |
fillBy(T[] array,
T obj,
String ds) |
<T> T[] |
fillByToday(T[] array,
T obj) |
String |
getPrimaryString() |
boolean |
isHasTimePoints() |
boolean |
isHasTimeSteps() |
static void |
main(String[] args) |
boolean |
matchDate(Calendar c)
是否匹配一个日期
|
boolean |
matchDate(Date d)
是否匹配一个日期
|
boolean |
matchDate(String ds)
是否匹配一个日期
|
boolean |
matchDayInMonth(int day)
看看能不能匹配上一个月的天数
|
boolean |
matchDayInWeek(int day)
看看能不能匹配上一周中的天数
|
boolean |
matchMonth(int m)
匹配月
|
boolean |
matchTime(int sec)
根据给定的秒数,判断是否匹配本表达式
|
boolean |
matchTime(String ts)
根据给定的时间字符串,判断是否匹配本表达式
|
boolean |
matchTime(org.nutz.lang.Times.TmInfo ti)
根据给定的时间,判断是否匹配本表达式
|
boolean |
matchYear(int year)
匹配年
|
<T extends CronOverlapor> |
overlap(T[] array,
Object obj,
Calendar c) |
<T extends CronOverlapor> |
overlap(T[] array,
Object obj,
Calendar c,
int off,
int len,
int unit)
本函数用来叠加数组
它将调用 each 函数,叠加数组中的匹配项。
|
<T extends CronOverlapor> |
overlapBy(T[] array,
Object obj,
String ds)
根据时间的毫秒数叠加数组
|
<T extends CronOverlapor> |
overlapBy(T[] array,
T obj,
Date d)
根据时间的毫秒数叠加数组
|
<T extends CronOverlapor> |
overlapBy(T[] array,
T obj,
long ms)
根据时间的毫秒数叠加数组
|
<T extends CronOverlapor> |
overlapByToday(T[] array,
T obj)
根据当前时间的毫秒数叠加数组
|
ZCron |
parse(String cron)
根据字符串,重新解析一个表达式
|
ZCron |
setPartExtDate(String str) |
ZCron |
setPartExtTime(String str) |
ZCron |
setPartStdDate(String str) |
ZCron |
setPartStdTime(String str) |
String |
toString() |
String |
toText(ZCroni18n i18n)
将表达式转换成人类可以读懂的文字
|
public ZCron()
public ZCron(String cron)
public static <T> T[] compact(T[] array)
这个函数可以配合 fill 来使用, fill 过的数组有些元素为 null
为了能紧凑显示,本函数去掉所有 null 元素,但是同时数组的下标信息就丢失了
如果不想丢失下标信息并且还想紧凑表达 请用 compactAll
T - array - 填充的数组public static <T> ArrayList<CronObj<T>> compactAll(T[] array)
T - array - 填充的数组public boolean matchDate(Calendar c)
c - 日期对象,时间部分无视public boolean matchDate(String ds)
ds - 日期字符串,格式为 yyyy-MM-dd 的字符串public boolean matchDate(Date d)
d - 日期public boolean matchDayInWeek(int day)
day - 一周内的天数,1 表示周日, 2 表示周一 ... 7 表示周六public boolean matchDayInMonth(int day)
day - 月中的天数,1 - 31public boolean matchMonth(int m)
m - 月份,1-12public boolean matchYear(int year)
year - 年份,2017 等public boolean matchTime(int sec)
sec - 一天中的秒数,为 0-86399,如果超出,按 86399,如果小于,按0public boolean matchTime(String ts)
ts - 时间字符串,格式为 HH:mm:ss 或者 HH:MMpublic boolean matchTime(org.nutz.lang.Times.TmInfo ti)
ti - 时间对象public <T> void each(T[] array,
CronEach<T> callback,
Calendar c)
#each(Object[], int, int, int, Calendar, CronEach)public <T> void each(T[] array,
CronEach<T> callback,
Calendar c,
int off,
int len,
int unit)
你的数组最多可以是 86400 的元素,对应一天中的每一秒,
根据你给定的日期,本函数来决定具体哪个一数组项目要被执行回调
当然,如果你给定日期不能匹配表达式,本函数会直接跳过执行,如果你不给定日期,则本函数一定会执行
关于数组的长度涉及到一个时间的缩放问题,NutzCron 实际上是声明了一天中的一系列启动点
这些点,我们可以用秒来表示,从 0-86399 分别表示一天中的任何一秒。
因此,给定的数组的长度最好能把 86400 整除 否则一天中最后一段时间会被忽略掉
根据数组的长度,我就能知道,你所关心的 Cron 表达式精细程度,
比如 如果长度为 24 则,你其实仅仅关心到一个小时,如果 1440 你仅仅关心到1分钟
同时,你可以自由的定义,比如你给定一个 400 长度的数组,那么 86400/400=216。
因此,对你来说,时间的单位是 216 秒。
本函数,执行的策略
T - array - 要被访问数组callback - 如果数组下标被匹配,则要执行的回调off - 从数组的哪个下标开始访问c - 日期对象。空的话,一定会执行迭代len - 访问多少个元素unit - 一个数组元素表示多少秒public <T extends CronOverlapor> T[] overlap(T[] array, Object obj, Calendar c, int off, int len, int unit)
它将调用 each 函数,叠加数组中的匹配项。
所谓叠加,就是数组每个元素都是一个 QzList,匹配的数组项,会 add 叠加对象。
与之不同的,fill(Object[], Object, Calendar) 是直接替换
T - array - 要被叠加的数组obj - 叠加对象c - 日期对象off - 从数组的哪个下标开始访问len - 访问多少个元素unit - 一个数组元素表示多少秒each(Object[], CronEach, Calendar)public <T extends CronOverlapor> T[] overlap(T[] array, Object obj, Calendar c)
public <T extends CronOverlapor> T[] overlapByToday(T[] array, T obj)
public <T extends CronOverlapor> T[] overlapBy(T[] array, T obj, long ms)
T - array - 要被叠加的数组obj - 叠加的对象ms - 毫秒数,但是仅仅其中的天这部分有意义overlap(CronOverlapor[], Object, Calendar)public <T extends CronOverlapor> T[] overlapBy(T[] array, Object obj, String ds)
T - array - 要被叠加的数组obj - 叠加的对象ds - 日期字符串,格式为 yyyy-MM-dd 的字符串overlap(CronOverlapor[], Object, Calendar)public <T extends CronOverlapor> T[] overlapBy(T[] array, T obj, Date d)
T - array - 要被叠加的数组obj - 叠加的对象d - 时间,但是仅仅其中的天这部分有意义overlap(CronOverlapor[], Object, Calendar)public <T> T[] fillByToday(T[] array,
T obj)
public <T> T[] fillBy(T[] array,
T obj,
long ms)
public <T> T[] fillBy(T[] array,
T obj,
String ds)
public <T> T[] fillBy(T[] array,
T obj,
Date d)
public <T> T[] fill(T[] array,
T obj,
Calendar c)
public <T> T[] fill(T[] array,
T obj,
Calendar c,
int off,
int len,
int unit)
它将调用 each 函数,填充数组中的匹配项。
所谓填充,就是数组每个元素都是一个 T,匹配的数组项,被设置成填充对象。
与之不同的,overlap(CronOverlapor[], Object, Calendar) 是叠加到一个 QzList
T - array - 要被填充的数组obj - 填充的对象c - 日期对象off - 从数组的哪个下标开始访问len - 访问多少个元素unit - 一个数组元素表示多少秒each(Object[], CronEach, Calendar)public boolean isHasTimePoints()
public boolean isHasTimeSteps()
public String getPrimaryString()
public String toText(ZCroni18n i18n)
i18n - 为多国语言参数,结构参见
src/main/resources/org/nutz/plugins/zcron/i18n/zh_cn.jspublic static void main(String[] args)
Copyright © 2020. All rights reserved.