Chronyk:把人类说的时间转成 Python 能懂的
Chronyk:把人类说的时间转成 Python 能懂的
Chronyk 在 GitHub 上拿到了 342 Star。
这是一个 Python 3 库,专门解决一个常见问题:人类写的时间字符串怎么解析成程序能处理的数据。用户输入"10 minutes ago"或者"昨天",你要把它变成 timestamp 或者 datetime 对象,Chronyk 就是干这个的。
1、这玩意儿是干嘛的
核心能力就一项:解析人类自然语言描述的时间。
“10 minutes ago”、“10. April 2015”、“2014-02-15”、“yesterday”、“2 days and 30 hours ago”——这些写法各不相同,Chronyk 都能识别并转成标准的时间对象。反过来也能生成相对时间描述,比如"in 2 hours"、“5 hours ago”。

2、安装和基本用法
安装很直接:
$ pip install chronyk
基本用法:
>>> from chronyk import Chronyk
>>> t = Chronyk("yesterday")
>>> t.timestamp()
1410235179.0
>>> t.relativestring()
"3 days ago"
>>> t.date()
datetime.date(2014, 9, 9)
构造函数接受 timestamp、自然语言字符串、标准日期格式。构造完成后能拿到各种格式的时间表示:ctime 字符串、timestamp、指定格式的 timestring、datetime 对象,还能生成相对时间描述。
3、输入验证和时区处理
对于需要校验的场景,Chronyk 支持限制未来时间:
timestr = input("Please enter the date you were born: ")
try:
date = chronyk.Chronyk(timestr, allowfuture=False)
except chronyk.DateRangeError:
print("Yeah, right.")
时区处理也比较灵活。构造时可以指定 timezone 参数,传入 UTC 偏移秒数,西为正、东为负。实例化后也能直接修改 timezone 属性。几乎所有方法都支持单独传 timezone 参数,也支持相对时间的跨时区转换。

4、在生态中的位置
Python 里处理时间解析的库不少。dateutil 的 parser 能处理常见格式,但对自然语言的覆盖有限。arrow 和 pendulum 侧重 datetime 的封装和运算,不是专门做自然语言解析的。
Chronyk 的定位很清晰:只管人类语言到时间对象的转换,以及相对时间描述的生成。代码量不大,接口简单,一个类几个方法覆盖了主要使用场景。
5、适合哪些人用
- 需要解析用户自然语言输入时间的命令行工具或 Web 应用
- 日志分析中处理各种非标准格式的时间戳
- 需要生成"X 小时前"这类相对时间描述的界面
- 涉及时区转换的后端服务
342 Star 的体量说明这是个工具型小库,不花哨但解决了一个真实痛点。如果你项目中经常要和人类写的时间打交道,值得装一个试试。
342 Star 的体量说明这是个工具型小库,不花哨但解决了一个真实痛点。如果你项目中经常要和人类写的时间打交道,值得装一个试试。
更多推荐


所有评论(0)