ajbdev/cronlingo

将 crontabs 以人类可读短语的形式表达

v0.1.1 2015-12-11 21:22 UTC

This package is not auto-updated.

Last update: 2024-09-14 18:36:45 UTC


README

Build Status

CRON Lingo

CronLingo可以将关于时间的人类可读字符串转换为有效的crontab。

示例

echo CronLingo::fromExpression('Every day at midnight');
// "0 0 * * *"

echo CronLingo::fromExpression('Every 15 minutes at midnight on the weekend');
// "*/15 0 * * 0,6"

echo CronLingo::fromExpression('Every other minute in August at noon on a weekday');
// "*/2 12 * 8 1,2,3,4,5"

echo CronLingo::fromExpression('The 1st day in April at midnight');
// "0 0 1 4 *"

echo CronLingo::fromExpression('Every day on the weekday at 2:25pm');
// "25 14 * * 1,2,3,4,5"

语法

CronLingo会识别字符串中与特定时间相关的关键词,例如"on, to, at",并据此推断时间含义,将其转换为crontab的一部分。它对语句的顺序并不关心。以下是它能够识别并解析为crontab的一些内容

  • 周期(每日、每周、每月)
  • 精确时间(晚上9:30,8a,3p)
  • 上午下午(AM/PM/A/P)
  • 间隔(第一,第二,其他,第九等)
  • 特定字段(秒,分钟,小时,日,月)
  • 星期几(星期日,星期一等)
  • 12点(中午,午夜)
  • 列表(例如,5到12分钟)
  • 月份名称(一月,二月等)
  • 周末/工作日

什么是cron tab?

cron tab是一个定义重复时间段的表达式。

看起来像这样

*    *    *    *    *
-    -    -    -    -
|    |    |    |    |
|    |    |    |    +----- day of week (0 - 7) (Sunday=0 or 7)
|    |    |    +---------- month (1 - 12)
|    |    +--------------- day of month (1 - 31)
|    +-------------------- hour (0 - 23)
+------------------------- min (0 - 59)

来自 维基百科

在类Unix计算机操作系统中的时间基于作业调度软件Cron,那些设置和维护软件环境的人使用cron来安排作业(命令或shell脚本)在固定的时间、日期或间隔定期运行。它通常用于自动化系统维护或管理——尽管它的通用性质使其可用于诸如定期连接到互联网和下载电子邮件等任务。