Arrow 让 Python 日期时间操作不再痛苦
Arrow: 让 Python 日期时间操作不再痛苦
arrow-py/arrow 在 GitHub 上拿到了 9,045 Star。
Python 标准库的日期时间模块一直让人头疼。datetime、time、calendar、dateutil、pytz,模块太多。date、time、datetime、tzinfo、timedelta,类型也太多。时区和时间戳转换写起来又长又绕。
Arrow 就是为这些痛点设计的。
1、 它解决了什么问题
写过 Python 日期处理的程序员都遇到过类似的窘境:解析一个 ISO 8601 时间字符串,得自己去查 strptime 的格式代码;处理时区,要额外装 pytz;计算三天后的日期,手动 timedelta,代码读完也不清楚到底做了什么。
Arrow 把分散的功能整合到一个对象上。创建、解析、转换、格式化、时区切换、人性化显示,全走同一个接口。
2、 核心功能
自动格式解析。get 方法能自动识别常见的时间字符串格式,不需要手工拼格式代码。支持 ISO 8601、RFC 2822 等标准格式,也覆盖了日常见到的大多数时间字符串写法。
内置时区支持。Arrow 默认使用 UTC,避免时区 naive 带来的隐性 bug。支持 pytz、dateutil 和 Python 3.9 的 ZoneInfo,切换时区一行完成。无论是转成纽约时间还是东京时间,不需要额外处理夏令时。
直观的时间偏移。shift 方法按小时、天、周、月做相对计算,代码读起来接近自然语言。shift(hours=-1) 就是减一小时,shift(weeks=3) 就是加三周,没有歧义。
人性化显示。humanize 把时间差转成"an hour ago"这类表达,支持几十种语言和地区。国际化的项目可以直接用。
时间区间和范围。可以按微秒到年的时间粒度,生成时间区间、时间范围、天花板和地板值。做数据聚合和报表时很实用。
PEP 484 类型提示全支持,编辑器里能拿到完整的类型补全。

3、 怎么用
安装:
pip install -U arrow
基本用法:
import arrow
# 自动解析
arrow.get('2013-05-11T21:23:58.970460+07:00')
# UTC 当前时间
utc = arrow.utcnow()
# 时间偏移
utc.shift(hours=-1)
# 时区转换
local = utc.to('US/Pacific')
# 格式化
local.format('YYYY-MM-DD HH:mm:ss ZZ')
# 人性化显示
local.humanize()
local.humanize(locale='ko-kr') # '한시간 전'
接口简洁,最常见的操作五六个方法覆盖完。

4、 适合的场景
- 项目里频繁涉及时区转换和时间格式化的 Python 开发者
- 需要时间区间计算和范围遍历的数据处理任务
- 想减少样板代码、提升代码可读性的团队
Arrow 的核心思路是用一个库完成一件事,而不是在 datetime、time、calendar、pytz 之间来回切。
升代码可读性的团队
Arrow 的核心思路是用一个库完成一件事,而不是在 datetime、time、calendar、pytz 之间来回切。
更多推荐
所有评论(0)