根据用简单语法表示的时间段测试日期/时间

timeswitch的Python项目详细描述


时间开关允许根据时间范围测试日期,以查看它们是否 包含在时间范围内。时间范围用 支持绝对日期和时间的简单语法,重复 句点,大于、小于、介于和精确匹配比较,以及 括号和中缀符号逻辑运算符的组合。

时间由以下有序的组件组成,具有合理的 省略时组件的默认值:

  • year:值为1-9999的范围表达式
  • month:带整数值1-12或大小写的范围表达式 麻木的一月,二月,三月,四月,五月,六月,七月,八月,九月,十月,十一月, 十二月
  • day:包含整数值1-31或大小写的范围表达式 迟钝的周一,周二,周三,周四,周五,周六,周日。与一个月一起使用时 工作日具有可选的序号1、2、3、4或5前缀 表示该月的第n个工作日
  • hour minute:包含两个由分隔的整数值的范围表达式 冒号0-23:0-59
  • 复合:具有全部或部分非二义性的范围表达式 年-月-日-小时-分钟值的序列

如果 必须使用api。

时间范围表达式类似于python数组语法:

  • -是任何值
  • x是一个值=x
  • x-y是一个x≤value≤y的值。注意:
    • -两边的表达式必须指定相同的 最右边的元素,例如2017 jan - febnot 2017 jan - feb 12
    • 右手边的重复周期必须与或相同 比第一个更频繁,例如jan - 2017 feb无效
    • 对于工作日范围,周一被视为一周的开始
  • -x是小于或等于x的值
  • x-是一个大于或等于x的值

时间范围表达式可以使用andor,^{tt12}组合$ 和( )形成嵌套表达式。

空字符串总是关闭的。破折号始终打开:

-

始终从2017年4月3日凌晨1:30开始:

2017 apr 3 1:30 -

总是在2017年4月3日当天或之后的每个星期五(年和月 可以省略,因为“fri”是一个明确的工作日:

fri and 2017 apr 3 -

总是在每月的第一个星期五4月3日或之后 2017年:

1st fri and 2017 apr 3 -

总是在每月的第一个或第三个星期五 2017年4月:

(1st fri or 3rd fri) and 2017 apr 3 -

每月的第一个星期五下午6:30到9:50:

1st fri 18:30-21:50

感恩节、圣诞节、节礼日和元旦:

nov 4th thu or dec 25 or dec 26 or jan 1

正常运算符优先级为notandor。括号可以 用于更改此:

not((jun or aug) and 2017)

用法

时间开关的命令行接口可用:

$ timeswitch
usage: timeswitch [-h][-d][-w][-y][-a][-p] expression [date]
timeswitch: error: too few arguments
$ timeswitch "2017 jan 20 -"
on
$ echo$?0
$ timeswitch "1972 dec 5 - 1975 nov 11"
off
$ echo$?1
$

--year--week--day选项提供了帮助 开发和调试时间开关表达式时的可视化。

在python中直接使用库:

fromtimeswitchimporttimeswitchfromdatetimeimportdatetimets=timeswitch('2017 may 4 20:20 - 20:30')printts(datetime(2017,5,4,20,21))# Trueprintts(datetime(2017,5,4,20,31))# False

timeswitch()接受名为monthsweekdaysordinal个参数。每一个都是可选的文本字符串数组 在分析相应的日期部分时使用,例如,如果需要 写“第一个星期三”而不是“第一个星期三”:

ts=timeswitch('first wed',ordinals='first second third fourth fifth'.split(' '))

贡献

您可以通过在项目中记录问题来为项目做出贡献 发布跟踪程序或提交请求。

发展

开发环境可以这样设置:

git clone https://bitbucket.org/rocketboots/timeswitch.git
cd timeswitch
pip install -e .[test]
python setup.py nosetests

贡献应该包括通过单元测试。

PYPI注册

为了支持pypi所期望的structuredtext,本文将 自动转换,前提是Pandoc 已安装程序包。在OS X上,

brew install pandoc
pip install pypandoc twine
python setup.py sdist
twine register dist/timeswitch-*.tar.gz

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
在Java中,我需要读取一个文本文件,并将每一行放在一个单独的数组中。但每次我读文本文件时,我都无法拆分行   SpringJavaservlet返回不正确的用户代理   java如何在spring测试中动态设置环境变量   绑定后的java关闭通道   java我想在设置方法中使用selenium执行多用户登录操作,我没有使用testng。xml我正在使用maven pom。仅xml   java foreach 2d数组分配   我想用java编写prim算法   java如何在Spring Boot中验证Rest请求   JavaJScrollPane问题   java将一个节点与另一个节点关联起来   java获取错误:范围内无法访问Polyline类型的封闭实例   字节[]到int,反之为java