Python时间处理利器:Arrow库详解与实战

Cora
Cora
发布时间:2026-10-14 | 2人浏览过
原创

本文深入解析Python中强大的时间处理库Arrow。通过对比原生datetime模块,展示Arrow如何简化时间操作。涵盖安装方法、当前时间获取、时间偏移(shift)、本地化显示(humanize)及多种格式转换技巧,帮助开发者高效处理复杂时间需求。

时间处理库——Arrow

使用背景

在实际开发场景中,日期与时间的处理无处不在,因此它已成为各类编程语言不可或缺的标准模块,Python自然也不例外。然而,你是否清楚Python中涉及时间相关的模块究竟有多少?例如datetime、time、calendar、 dateutil、 pytz 等。此外,你还了解Python中支持的时间数据类型有哪些吗?比如date、time、datetime、tzinfo、timedelta 等。

博主曾在一个具体需求中遇到挑战:需要统计过去几个月内的数据。前端传递过来的是当前时间戳,我需要基于该时间戳向前推算三个月、四个月甚至半年的时间。如果仅依靠基础的时间加减运算,过程将变得异常繁琐。因此,博主决定采用Python的时间处理库——Arrow来解决这一问题。

在正式介绍Arrow库之前,我们先回顾一下Python中各种时间格式之间的转换方式。


无论使用何种工具,熟练掌握相关模块和API操作都是必不可少的。即使无法记住所有细节,至少也应通过手动编写代码来加深印象。这样,下次遇到问题时,你才能快速查阅文档,定位到具体类或方法的功能及用法。

但今天,我要重点推荐一个时间日期库:Arrow。它的灵感来源于requests库,旨在将所有复杂的底层逻辑隐藏起来,为用户提供一个对开发者友好的接口(for humans)。这充分诠释了“Keep It Simple and Stupid”(KISS)原则的含义。

安装Arrow


pip install arrow

Arrow库的使用方法

  • 获取当前时间

  • 获取不同时间格式

游标偏移(shift)

这是Arrow库中我认为最实用的功能之一。它允许你随意将时间向前或向后推移,基本能够满足所有关于时间推算的操作需求。建议尽快尝试使用。

  • 向后推算时间

  • 向前推算时间

  • 人性化显示(humanize)

humanize方法用于将当前时刻转换为“多久以前”的可读字符串形式。默认输出为英文格式,通过指定locale参数,可以显示相应语言的格式。

  • 格式化(format)

获取Arrow对象

  • get方法是获取Arrow对象最便捷的方式。

# 不带参数,等价与 utcnow()
>>> arrow.get()
<Arrow [2018-08-24T07:11:50.528742+00:00]>
# 接受时间戳参数
>>> arrow.get(1535113845)
# 接受一个datetime对象
>>> arrow.get(datetime(2018,8,24))
<Arrow [2018-08-24T00:00:00+00:00]>
# 接收一个date对象
>>> from datetime import date
>>> arrow.get(date(2018,7,24))
<Arrow [2018-07-24T00:00:00+00:00]>
# 接收日期格式的字符串
>>> arrow.get("2018-08-11 12:30:56")
<Arrow [2018-08-11T12:30:56+00:00]>
# 接收日期字符串,并指定格式
>>> arrow.get("18-08-11 12:30:56", "YY-MM-DD HH:mm:ss")
<Arrow [2018-08-11T12:30:56+00:00]>

Arrow类型转换与时区修改


# 字符串转时间
print(arrow.get('2017-10-28T00:00:00+0800'))
# print(arrow.get('2017-10-28', 'YYYY-MM-DD'))  # 字符串转时间(不推荐这样用,没有设时区)
print(arrow.get('2017-10-28', 'YYYY-MM-DD', tzinfo='local'))  # (推荐)
print(arrow.get('2017-10-28', 'YYYY-MM-DD', tzinfo='Asia/Shanghai'))  # 这样也可以
print(arrow.get('2017-10-28 05:30:30', 'YYYY-MM-DD HH:mm:ss', tzinfo='local'))  # (推荐)
print('-------------')

# 时间戳
print(local.timestamp)  # 时间戳
print(arrow.get('1509120000', tzinfo='local'))  # 时间戳字符串,转换为本时区的时间

# 时间转为字符串,输出(格式化)
print(local.format("YYYY-MM-DD"))
print(local.format("YYYY-MM-DD HH:mm:ss"))
print(local.replace(minutes=-1).humanize(locale='zh'))  # 本地化个性时间短语: 刚才,1分钟前,1天前,等  (zh_tw  更多语言的支持,去查看arrow/locales.py)

关于Python中Arrow库的使用介绍暂告一段落。在后续文章中,我将介绍用于处理数据的Pandas库,帮助你轻松应对Python中复杂而海量的数据处理任务。

总结

本文到此结束,希望能为你提供帮助。同时也欢迎大家关注本站,获取更多技术内容!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表