我做了一些搜索,但没有找到任何看起来有用的东西,但我想知道是否有人知道可以解析英语短语并将它们翻译成cron字符串的东西(工具,lib等)。
例如:Every Tuesday at 15:00
转换为0 15 * * 2
似乎有些东西会有很多陷阱,最好是从别人的工作中受益。你可以在一些不错的网站/应用中看到它,它可以从一个简单的短语中找出你的意思,而不是有一些可怕的用户界面。
提前致谢。
答案 0 :(得分:3)
尽管这是一个古老的问题,但我想列出到目前为止我所知道的所有库/工具,以便此答案可以帮助到达此页面的其他人寻找相同的东西:
JavaScript:
PHP:
natural-cron-expression
(link)Ruby:
whenever
(link)如果您知道此处未列出的任何其他库,请随时回复评论:)
(完整披露:我和我的朋友开发了natural-cron.js,当时没有其他库满足我们项目的需求)
答案 1 :(得分:2)
对于Ruby,"Whenever"可能提供一个起点:它将准英语(实际上它是有效的Ruby)转换为cron字符串。
答案 2 :(得分:1)
根据你需要它的灵活性,以及你愿意自己卷起袖子,你可以为此定义一个简单的语法。
每个都是量词。你可能需要其他人,但我想不出任何其他人。有效语法可能是:
每次 (日规) AT (时间)
day-spec 可以是文字日(即星期一)或是该月的某一天(即第30天 )或其他一些语法(我建议使用Fortnights,但我不确定Cron是否可以代表那些)。
可以使用24小时( 16:00 )或12小时( 4:00 pm )格式指定时间。
您可能需要的另一种语法是: 每个 (频率) 来自 (时间),其中频率基本上是(数量) (单位)(即 10分钟)。从时间开始,您可以设置偏移量(例如每隔30分钟从上午01:10 )。
您可能需要坐下来更多地了解这些细节。但是使用recursive descent可以相对容易地实现严格的语法。
答案 3 :(得分:0)
嗯,关于那些陷阱......如何编写一个将cron params 翻译成英文?这样你就可以看出解析器是否“理解”了你。