将cron表达式转换为易懂的描述字符串?JAVA和Objective-C有相关的库吗?

13
我正在寻找一个将类似于 45 17 7 6 * *cron表达式 转换为每年的6月7日,17:45的解析器。该解析器应可适用于其他语言。首先是德语。
以下两个库是否适合于:
  • 基于JAVA的Android项目。
  • 基于Objective-C的Iphone项目。
请参阅此处了解用例。

2
听起来有点像“替我完成工作”的问题... 试着去掉像“我需要一个...”、“我们需要它用于...”、“它必须是...”这样的表述,尝试用“我正在寻找...”等表述代替。 - Jasarien
谢谢!抱歉,我有点忘记了我的“社交”英语。我需要在一个英语国家度假!;) 但是,我不想重新发明轮子。因此我正在寻找已经开发和测试过的现有解决方案来解决我的问题。 - OneWorld
1
可能是Cron to human readable string的重复问题。 - Mauricio Scheffer
3个回答

10
cronTrigger.getExpressionSummary()

例子:

    CronTrigger t = new CronTrigger();
    t.setCronExpression("0 30 10-13 ? * WED,FRI");
    System.out.println(""+t.getExpressionSummary());

输出:

seconds: 0
minutes: 30
hours: 10,11,12,13
daysOfMonth: ?
months: *
daysOfWeek: 4,6
lastdayOfWeek: false
nearestWeekday: false
NthDayOfWeek: 0
lastdayOfMonth: false
years: *

1
好的,这似乎是开发者的一个转储。谢谢你给我展示类作为保存字符串对象的好方法。我正在进一步调查。然而,我不能将这个转储呈现给安卓用户。 - OneWorld
1
不。但是想象一下你在小智能手机屏幕上看到这个转储。 - OneWorld
1
如果我这样做的话,我的设计师会杀了我;)这个输出不是人类可读的,或者至少不是“客户可读的”,“设计师可读的”;) - OneWorld
@JigarJoshi 如何将它们转换为毫秒?! - Dr.jacky
Quartz在cron表达式中不支持毫秒。 - jmj
显示剩余3条评论

4

您可能会发现cron-utils对此任务很有用,因为它提供了各种语言的人类可读描述,并且不需要完整的调度程序来提供它们。支持多个cron格式。 下面是文档中的代码片段:

//create a descriptor for a specific Locale
CronDescriptor descriptor = CronDescriptor.instance(Locale.UK);

//parse some expression and ask descriptor for description
String description = descriptor.describe(parser.parse("*/45 * * * * *"));
//description will be: "every 45 seconds"

1
在Java中,可以看一下cron4j http://www.sauronsoftware.it/projects/cron4j/。在那里你会找到需要的解析器,但需要编写代码将字符串按需打印出来。首先创建一个SchedulingPattern对象即可。
new SchedulingPattern("0 30 10-13 ? * 1,2,5")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接