在linux外解析/评估/生成CrontabExpressions? [英] Parse/evaluate/generate CrontabExpressions outside of linux?

查看:133
本文介绍了在linux外解析/评估/生成CrontabExpressions?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在构建一些需要调度输入的软件,我真的想重新使用crontab的设计,因为它只是工作。

I'm building some software that needs a scheduling input, and I'd really like to re-use the design of crontab because it simply works.

a href =http://en.wikipedia.org/wiki/CRON_expression#CRON_expression =nofollow> CrontabExpressions 可以非常简单 * / 5 * * * * 每五分钟运行一次或更复杂 2-59 / 3 1,9,22 11-26 1-6? 2003 2003年1月11日至26日每月1月至6月每3分钟从上午1点开始,上午9点和晚上10点。

CrontabExpressions can be really simple */5 * * * * "run every five minutes" or more complex 2-59/3 1,9,22 11-26 1-6 ? 2003 "In 2003 on the 11th to 26th of each month in January to June every third minute starting from 2 past 1am, 9am and 10pm".

我不打算使用名为crontab的linux软件,我正在寻找一种方法来正确评估这些表达式(例如,输出匹配的下25个时间戳crontab,或者基于一些抽象的GUI为用户生成它)。

I am not looking to use the linux software called crontab, I'm seeking a way I can evaluate these expressions correctly (for instance, output the next 25 timestamps that match the crontab, or generate it based on some abstracted GUI for the users).

我真的找不到任何库或函数,这在JavaScript或PHP甚至其他语言。如果他们不存在,什么是一个好的方法来做到这一点?我已经知道一个过度复杂的正则表达式可能是错误的答案。我很难在crontab中找到C 源代码

I can't really find any libraries or functions that do this in JavaScript or PHP or even other languages. If they don't exist, what would be a good method to do this? I already know an overly-complicated regular expression is likely to be the wrong answer. I'm having a hard time finding the C source code in crontab that does this task as well, which makes me believe it might not take place here?

推荐答案

要输出下一个25与您可以使用的crontab匹配的时间戳 crontab Python模块:

To output the next 25 timestamps that match the crontab you could use crontab Python module:

from datetime import datetime, timedelta
import crontab

tab = crontab.CronTab('2-59/3 1,9,22 11-26 1-6 ? 2012')

dt = datetime.now()
for _ in xrange(25):
    delay = tab.next(dt) # seconds before this crontab entry can be executed.
    dt += timedelta(seconds=delay)
    print(dt)



输出



Output

2012-01-11 22:41:00
2012-01-11 22:44:00
2012-01-11 22:47:00
2012-01-11 22:50:00
2012-01-11 22:53:00
2012-01-11 22:56:00
2012-01-11 22:59:00
2012-01-12 01:02:00
2012-01-12 01:05:00
2012-01-12 01:08:00
2012-01-12 01:11:00
2012-01-12 01:14:00
2012-01-12 01:17:00
2012-01-12 01:20:00
2012-01-12 01:23:00
2012-01-12 01:26:00
2012-01-12 01:29:00
2012-01-12 01:32:00
2012-01-12 01:35:00
2012-01-12 01:38:00
2012-01-12 01:41:00
2012-01-12 01:44:00
2012-01-12 01:47:00
2012-01-12 01:50:00
2012-01-12 01:53:00

还有 python-crontab 提供 crontab 模块,但具有更丰富的功能(解析/生成)。

There is also python-crontab that provides crontab module but with richer functionality (parse/generate).

这篇关于在linux外解析/评估/生成CrontabExpressions?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆