一个增强的、友好的时间处理库:sandglass
jopen
10年前
sandglass(沙漏) 是一个增强的、友好的时间处理库,目的是为了解放程序员的生产力。在python中有太多处理时间的库,datetime/date/time/calendar等等。需要记的细节太多,选择困难。而sandglass就是解决这个的青霉素。从各种麻烦的转换中解脱出来。只需记住 Sandglass对象 和 ben() 、 tslice() 、 cronwalk() 这几个主要的api即可。
Features:
- api简洁,开箱即用
- 增强接管datetime
- 内置时间字符串解析器
- 方便进行各种转换
- 灵活的构造函数
- 方便的获取各种时间信息
- 支持伪造当前时间,方便调试
- 一键生产时间序列
- 支持解析crontab表达式
用法
在sandglass中,核心对象是 Sandglass对象 。
ben() 函数用来便捷获取Sandglass对象.:
不带参数默认是当前时间 >>>ben()#shortcut of Sandglass.now() 参数是时间戳 >>>ben(timestamp) 参数是时间字符串 >>>ben(timestr) 参数是datetime对象 >>>ben(datetime) 参数是Sandglass对象 >>>ben(Sandglass) 显式指明格式 >>>ben('2013-01-01','%Y-%m-%d') datetime-like的构造器 >>>ben(year=2013,month=2,day=8,hour=7)
也就是说,只要把能表达时间的东西塞给ben()就行了。值得一说的是ben(timestr)中通过一个词法解析的东西,使得timestr可以很灵活。大体规则是,如果缺少年月日信息,则默认用当前时间的年月日;如果缺少时分秒信息,则默认是0:
>>>ben('2013,1,1') == ben('2013-01,01') == ben('2013 1 01') == ben('2013-01-01 00:00:00') True >>>ben('2013,1,1 19:23') == ben('2013-01-01 19:23:00') True >>>now = datetime.now() >>>ben('19:23').year == now.year True >>>ben('19:23').month == now.month True >>>ben('19:23').day == now.day True >>> ben('19:23').hour,ben('19:23').minute,ben('19:23').second (19,23,0)