为每周创建一个cron表达式

时间:2011-03-26 07:25:04

标签: java-ee

假设我传递了像2009-07-13T18:00:00

这样的值

我必须使用Java创建cron表达式以获得* * 18 13 07 2009

你能帮帮我吗?

2 个答案:

答案 0 :(得分:1)

您的crontab(5)表达式:

* * 18 13 07 2009

将在第13个月的第18天,即本周的第2009天每小时执行一次。 :)

2009年7月13日,是星期一。每周执行一次crontab条目,以此为出发点:

0 18 * * 1

这将在每周的第一天的18:00执行。 (星期日是0。)

cron没有“开始”和“停止”日期的概念。事情只会在将来执行。当您希望它们停止时,您将删除该条目。它是非常原语,类似“本月的最后一个星期五”之类的东西很麻烦,但是五个小数字可以做到这一点真是太棒了。

答案 1 :(得分:0)

你的cron格式不清楚。 * * 18 13 07 2009不是有效的cron条目。

您可以使用SimpleDateFormat将值转换为所需的格式。

因此,在您的情况下,您可以使用以下内容。

String s = "2009-07-13T18:00:00";
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-ddTHH:mm:ss");
Date d = sf.parse();

//now convert to the format you want
sf = new SimpleDateFormat("* * HH dd mm yyyy");
String cronEntry = sf.format(d);

但在此之前,请检查您的cron条目,并确切了解如何设置cron时序。您提供的示例无效。