如何将英语转换为Cron?

时间:2009-12-16 08:25:34

标签: parsing nlp

我做了一些搜索,但没有找到任何看起来有用的东西,但我想知道是否有人知道可以解析英语短语并将它们翻译成cron字符串的东西(工具,lib等)。

例如:Every Tuesday at 15:00转换为0 15 * * 2

似乎有些东西会有很多陷阱,最好是从别人的工作中受益。你可以在一些不错的网站/应用中看到它,它可以从一个简单的短语中找出你的意思,而不是有一些可怕的用户界面。

提前致谢。

4 个答案:

答案 0 :(得分:3)

尽管这是一个古老的问题,但我想列出到目前为止我所知道的所有库/工具,以便此答案可以帮助到达此页面的其他人寻找相同的东西:

JavaScript:

  • natural-cron.jslink

  • friendly-cronlink

PHP:

  • natural-cron-expressionlink

Ruby:

  • wheneverlink

如果您知道此处未列出的任何其他库,请随时回复评论:)

完整披露:我和我的朋友开发了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 翻译成英文?这样你就可以看出解析器是否“理解”了你。