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

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 Clojure关键字在内存中的大小是多少?   Java中有固定长度的通用数组对象吗?   PostgreSQL:通过Java更新我的用户表   错误:使用java解析xml   java Json显示列表中对象的名称   java比较JodaTime时区   与JAVA中的API和包的区别?   java的int值在for循环中不改变   谷歌应用引擎中的java RSA   迁移到spring 5后出现java非法字符错误   java Websphere管理控制台不工作   JavaGSON如何始终在json中包含毫秒?   带有空格和双引号的windows Java ProcessBuilder命令参数失败   java错误:重复的zip条目[43.jar:org/apache/http/annotation/NotThreadSafe.class]