一个增强的、友好的时间处理库: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)

项目主页:http://www.open-open.com/lib/view/home/1419685078625