人类可读的日期时间间隔到Python中的datetime.timedelta?

时间:2012-12-19 18:35:08

标签: python datetime intervals

我发现自己需要在python配置文件中指定一个时间跨度。

有没有办法可以在带有stdlib的python配置文件中指定更人性化的时间帧(类似于PostgreSQL的Interval语法)?或者这需要第三方lib?

澄清我并没有特别在ConfigParser.ConfigParser stdlib API中寻找任何内容。我想我真正需要的是一种从人类可读日期/时间间隔到datetime.timedelta值的方法。

2 个答案:

答案 0 :(得分:1)

我认为没有标准的库模块。我写了一个这样做的。您可以安装它,或根据您的需要进行调整。

该模块名为pycopia.timespec

它将诸如“1day 3min”之类的字符串转换为秒,作为float。从中获取datetime.timedelta很容易。

答案 1 :(得分:1)

我在somewhat related question中找到了一个很好的答案。事实证明humanfriendly库做得很好:

In [1]: import humanfriendly

In [2]: humanfriendly.parse_timespan('1w')
Out[2]: 604800.0

以秒为单位。要获取timedelta对象,您可以简单地加载该对象:

In [3]: from datetime import timedelta

In [4]: timedelta(seconds=humanfriendly.parse_timespan('1w'))
Out[4]: datetime.timedelta(7)

由于人类友好型还支持其他方式的转换,因此您也可以执行完整的往返行程,如下所示:

In [5]: humanfriendly.format_timespan(timedelta(seconds=humanfriendly.parse_timespan('1w')).total_seconds())
Out[5]: '1 week'

不幸的是,请注意format_timespan如何不访问timedelta对象:只有一个整数(秒)。