当前位置:首页>python>Python库介绍:arrow

Python库介绍:arrow

  • 2026-10-11 06:10:20
Python库介绍:arrow
超好用!几行代码搞定 Python 所有时间处理
写 Python 最烦的是什么?
一定是时间处理。
原生 datetime 语法又长又绕、时区混乱、加减时间超级麻烦,每次写时间逻辑都要翻文档。
今天给大家推荐一个公认最好用的 Python 时间库:arrow
一句话替代原生 datetime,代码极简、可读性极强。
------------------------------------------------------------------------

✨ arrow 库简介

Arrow 是一个轻量、优雅、开箱即用的 Python 时间处理开源库。
专门用来解决原生 datetime 语法繁琐、易用性差、时区坑多的问题。

核心优势

✅ 语法极简,新手零门槛
✅ 支持时间格式化、时间加减、时间戳、时区转换
✅ 代码量极少,可读性拉满
✅ 免费开源,项目可直接商用

适用场景

自动化脚本日志时间
数据分析时间清洗
项目开发时间格式化、时间推算
跨时区时间转换需求

⚙️ 安装方式

常规安装:
pip install arrow
国内镜像加速(推荐,秒装不卡):
pip install arrow -i https://pypi.tuna.tsinghua.edu.cn/simple

💻 高频实战代码

1、获取当前时间并格式化

import arrow# 获取当前时间并格式化now = arrow.now().format("YYYY-MM-DD HH:mm:ss")print("当前时间:", now)

2、时间快速加减

import arrow# 3天前day_ago = arrow.now().shift(days=-3).format("YYYY-MM-DD")# 2小时后hour_later = arrow.now().shift(hours=2).format("HH:mm:ss")print("三天前:", day_ago)print("两小时后:", hour_later)

3、时间戳与时间互转

import arrow# 时间转时间戳:timestamp() 要加括号调用timestamp = arrow.now().timestamp()print("当前时间戳:", timestamp)# 时间戳转回标准时间time_str = arrow.get(timestamp).format("YYYY-MM-DD HH:mm:ss")print("时间戳还原:", time_str)

📌 代码简单说明

import arrown = arrow.now() # 获取当前时间print(n)print(n.format("YYYY-MM-DD HH:mm:ss")) # 格式化时间print(n.shift(hours=2).format("YYYY-MM-DD HH:mm:ss")) # 加2小时print(n.shift(days=-3).format("YYYY-MM-DD HH:mm:ss")) # 减3天
   常用语法:
import arrow# 1. 获取时间now = arrow.now()                # 当前本地时间utc = arrow.now("UTC")           # UTC时间t = arrow.get("2026-07-09 16:30")# 字符串转时间对象print("本地当前时间:", now)print("UTC时间:", utc)print("字符串转时间对象:", t)# 2. 格式化输出fmt1 = now.format("YYYY-MM-DD HH:mm:ss") # 标准时分秒fmt2 = now.format("YYYYMMDD")           # 纯日期数字print("标准格式化:", fmt1)print("纯数字日期:", fmt2)# 3. 时间偏移 shiftadd1h = now.shift(hours=1)    # +1小时sub5m = now.shift(minutes=-5) # -5分钟yesterday = now.shift(days=-1)    # 昨天next_month = now.shift(months=1)   # 下月print("1小时后:", add1h.format("YYYY-MM-DD HH:mm:ss"))print("5分钟前:", sub5m.format("YYYY-MM-DD HH:mm:ss"))print("昨天:", yesterday.format("YYYY-MM-DD HH:mm:ss"))print("下个月:", next_month.format("YYYY-MM-DD HH:mm:ss"))# 4. 时间戳互转(修复低版本无timestamp_ms报错)ts = now.timestamp()                  # 秒时间戳ms = int(now.timestamp() * 1000)      # 兼容写法,毫秒时间戳ts_dt = arrow.get(ts)                         # 秒戳转时间ms_dt = arrow.get(ms / 1000)                  # 毫秒戳转时间print("秒时间戳:", ts)print("毫秒时间戳:", ms)print("秒戳还原时间:", ts_dt.format("YYYY-MM-DD HH:mm:ss"))print("毫秒戳还原时间:", ms_dt.format("YYYY-MM-DD HH:mm:ss"))# 5. 起止时间快速获取today_zero = now.floor("day") # 今日0点next_day_zero = now.ceil("day")  # 次日0点current_hour = now.floor("hour")# 当前小时整点print("今日零点:", today_zero.format("YYYY-MM-DD HH:mm:ss"))print("次日零点:", next_day_zero.format("YYYY-MM-DD HH:mm:ss"))print("当前整点:", current_hour.format("YYYY-MM-DD HH:mm:ss"))# 6. 时间对比t1 = arrow.get("2026-01-01")is_later = now > t1                             # 判断时间先后diff_sec = (t1 - now).total_seconds()            # 相差总秒数print("当前是否晚于2026-01-01:", is_later)print("时间差值(秒):", diff_sec)# 7. 替换指定字段eight_clock = now.replace(hour=8, minute=0) # 修改为当日8点整print("当日8点:", eight_clock.format("YYYY-MM-DD HH:mm:ss"))

⚠️ 常见踩坑提醒

建议使用
Python3.7+ 版本,兼容性最佳
需要 UTC 时间可使用:arrow.utcnow()
安装报错可先卸载重装:pip uninstall arrow

✅ 总结

如果你平时写 Python 经常需要处理时间,强烈建议直接用 arrow 替代原生 datetime。
代码更少、逻辑更清晰、几乎没有时区坑,不管是写脚本还是做项目都极其舒服。
建议收藏,以后遇到时间需求直接复制即用!
持续更新 Python 实用库|自动化脚本|高效开发技巧
关注我,告别冗余代码,轻松写 Python!

最新文章

随机文章