AWS Cron 解析器
项目描述
主要分支状态
开发分支状态
pyawscron
来自 typescript 项目的 python 端口。
https://github.com/beemhq/aws-cron-parser
安装
pip install pyawscron
AWS Cron 表达式
cron(字段)
| 场地 | 价值观 | 通配符 |
|---|---|---|
|
分钟 |
0-59 |
, - * / |
|
小时 |
0-23 |
, - * / |
|
日期 |
1-31 |
, - * ? / 长宽 |
|
月 |
1-12 或 1-12 月 |
, - * / |
|
星期几 |
1-7 或 SUN-SAT |
, - * ? 大号# |
|
年 |
1970-2199 |
, - * / |
通配符
- ,(逗号)通配符包括附加值。在月份字段中,JAN、FEB、MAR 将包括一月、二月和三月。
- -(破折号)通配符指定范围。在 Day 字段中,1-15 将包括指定月份的第 1 天到第 15 天。
- *(星号)通配符包括字段中的所有值。在“小时”字段中,* 将包括每小时。您不能在 Day-of-month 和 Day-of-week 字段中都使用 *。如果你在一个中使用它,你必须使用 ? 在另一个。
- /(正斜杠)通配符指定增量。在“分钟”字段中,您可以输入 1/10 以指定从一小时的第一分钟开始的每十分钟(例如,第 11、21 和 31 分钟等)。
- 这 ?(问号)通配符指定一个或另一个。在 Day-of-month 字段中,您可以输入 7,如果您不关心 7 号是星期几,您可以输入 ? 在星期几字段中。
- Day-of-month 或 Day-of-week 字段中的 L 通配符指定月或周的最后一天。
- Day-of-month 字段中的 W 通配符指定工作日。在 Day-of-month 字段中,3W 指定最接近该月第三天的工作日。
- Day-of-week 字段中的# 通配符指定一个月内指定星期几的某个实例。例如,3#2 将是该月的第二个星期二:3 指的是星期二,因为它是每周的第三天,而 2 指的是该类型在该月内的第二天。
迭代使用
下一个
from pyawscron import AWSCron
import datetime
import calendar
def main():
aws_cron = AWSCron("0 5 4 * ? *")
today = datetime.datetime.utcnow().date()
start_date = datetime.datetime(today.year, today.month, 1, tzinfo=datetime.timezone.utc)
last_day = calendar.monthrange(today.year, today.month)[1]
end_date = datetime.datetime(today.year, today.month, last_day, tzinfo=datetime.timezone.utc)
dt=start_date
while True:
dt = aws_cron.occurrence(dt).next()
if dt > end_date:
break
print(dt)
if __name__ == "__main__":
main()
上一页
from pyawscron import AWSCron
import datetime
def main():
aws_cron = AWSCron("0 5 4 * ? *")
today = datetime.datetime.utcnow().date()
start_date = datetime.datetime(today.year, today.month, 1, tzinfo=datetime.timezone.utc)
end_date = datetime.datetime(today.year, today.month-1, 1, tzinfo=datetime.timezone.utc)
dt=start_date
while True:
dt = aws_cron.occurrence(dt).prev()
if dt < end_date:
break
print(dt)
if __name__ == "__main__":
main()
辅助方法
get_all_schedule_bw_dates
使用开始日期和结束日期返回 UTC 日期时间对象列表。结束日期具有包含或排除的标志。
注意:此方法对可以返回多少个 datetime 对象没有限制。如果内存成为问题,请使用迭代方法或 get_next_n_schedule。
from_dt = datetime.datetime(2021, 8, 7, 8, 30, 57, tzinfo=datetime.timezone.utc)
to_date = datetime.datetime(2021, 8, 7, 11, 30, 57, tzinfo=datetime.timezone.utc)
AWSCron.get_all_schedule_bw_dates(from_dt, to_date, '0/23 * * * ? *')
# Resulting list
[datetime.datetime(2021, 8, 7, 8, 46, tzinfo=datetime.timezone.utc),
datetime.datetime(2021, 8, 7, 9, 0, tzinfo=datetime.timezone.utc),
datetime.datetime(2021, 8, 7, 9, 23, tzinfo=datetime.timezone.utc),
datetime.datetime(2021, 8, 7, 9, 46, tzinfo=datetime.timezone.utc),
datetime.datetime(2021, 8, 7, 10, 0, tzinfo=datetime.timezone.utc),
datetime.datetime(2021, 8, 7, 10, 23, tzinfo=datetime.timezone.utc),
datetime.datetime(2021, 8, 7, 10, 46, tzinfo=datetime.timezone.utc),
datetime.datetime(2021, 8, 7, 11, 0, tzinfo=datetime.timezone.utc),
datetime.datetime(2021, 8, 7, 11, 23, tzinfo=datetime.timezone.utc)]
get_next_n_schedule
从提供的开始日期返回与 aws cron 表达式匹配的 n 个下一个日期时间的列表。
from_dt = datetime.datetime(2021, 8, 7, 8, 30, 57, tzinfo=datetime.timezone.utc)
AWSCron.get_next_n_schedule(10, from_dt, '0/23 * * * ? *')
# Resulting list
[datetime.datetime(2021, 8, 7, 8, 46, tzinfo=datetime.timezone.utc),
datetime.datetime(2021, 8, 7, 9, 0, tzinfo=datetime.timezone.utc),
datetime.datetime(2021, 8, 7, 9, 23, tzinfo=datetime.timezone.utc),
datetime.datetime(2021, 8, 7, 9, 46, tzinfo=datetime.timezone.utc),
datetime.datetime(2021, 8, 7, 10, 0, tzinfo=datetime.timezone.utc),
datetime.datetime(2021, 8, 7, 10, 23, tzinfo=datetime.timezone.utc),
datetime.datetime(2021, 8, 7, 10, 46, tzinfo=datetime.timezone.utc),
datetime.datetime(2021, 8, 7, 11, 0, tzinfo=datetime.timezone.utc),
datetime.datetime(2021, 8, 7, 11, 23, tzinfo=datetime.timezone.utc),
datetime.datetime(2021, 8, 7, 11, 46, tzinfo=datetime.timezone.utc)]
get_prev_n_schedule
从提供的开始日期返回与 aws cron 表达式匹配的 n 个 prev 日期时间的列表。
from_dt = datetime.datetime(2021, 8, 7, 11, 50, 57, tzinfo=datetime.timezone.utc)
AWSCron.get_prev_n_schedule(10, from_dt, '0/23 * * * ? *')
# Resulting list
[datetime.datetime(2021, 8, 7, 11, 46, tzinfo=datetime.timezone.utc),
datetime.datetime(2021, 8, 7, 11, 23, tzinfo=datetime.timezone.utc),
datetime.datetime(2021, 8, 7, 11, 0, tzinfo=datetime.timezone.utc),
datetime.datetime(2021, 8, 7, 10, 46, tzinfo=datetime.timezone.utc),
datetime.datetime(2021, 8, 7, 10, 23, tzinfo=datetime.timezone.utc),
datetime.datetime(2021, 8, 7, 10, 0, tzinfo=datetime.timezone.utc),
datetime.datetime(2021, 8, 7, 9, 46, tzinfo=datetime.timezone.utc),
datetime.datetime(2021, 8, 7, 9, 23, tzinfo=datetime.timezone.utc),
datetime.datetime(2021, 8, 7, 9, 0, tzinfo=datetime.timezone.utc),
datetime.datetime(2021, 8, 7, 8, 46, tzinfo=datetime.timezone.utc)]
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
pyawscron-1.0.5.tar.gz
(9.8 kB
查看哈希)
内置分布
pyawscron-1.0.5-py3-none-any.whl
(8.8 kB
查看哈希)