Skip to main content

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 查看哈希

已上传 source

内置分布

pyawscron-1.0.5-py3-none-any.whl (8.8 kB 查看哈希

已上传 py3