内容目录
原文链接:http://www.juzicode.com/python-module-date-time
1. python-dateutil
功能:扩展 Python 标准库的 datetime
模块,支持自然语言解析、相对时间计算、时区处理等。
特点:
- 支持解析多种日期格式
- 提供相对时间计算(如
relativedelta
) - 支持时区处理
实例:
#juzicode.com/VX公众号:juzicode
from dateutil import parser
from dateutil.relativedelta import relativedelta
from datetime import datetime
date = parser.parse("2023-10-05 14:30:00")
print(date) # 输出: 2023-10-05 14:30:00
now = datetime.now()
next_month = now + relativedelta(months=+1)
print(next_month)
2. pytz
功能:提供时区支持,处理带时区的 datetime
对象。
特点:
- 包含全球时区数据库
- 与 Python 标准库的
datetime
模块兼容
实例:
#juzicode.com/VX公众号:juzicode
from datetime import datetime
import pytz
utc_time = datetime.now(pytz.UTC)
print(utc_time)
shanghai_time = utc_time.astimezone(pytz.timezone("Asia/Shanghai"))
print(shanghai_time)
3. arrow
功能:简化日期时间操作和格式化。
特点:
- 提供简洁的 API
- 支持自然语言解析
实例:
#juzicode.com/VX公众号:juzicode
import arrow
now = arrow.now()
print(now)
utc_time = now.to('UTC')
print(utc_time)
4. dateparser
功能:解析自然语言中的日期时间字符串。
特点:
- 支持多种语言
- 解析模糊日期(如 “tomorrow at noon”)
实例:
#juzicode.com/VX公众号:juzicode
import dateparser
date = dateparser.parse("tomorrow at noon")
print(date)
5. delorean
功能:时区处理和日期时间操作。
特点:
- 基于
pytz
和dateutil
- 简洁的时区转换
实例:
#juzicode.com/VX公众号:juzicode
from delorean import Delorean
now = Delorean()
print(now)
utc_time = now.shift('UTC')
print(utc_time)
6. moment
功能:轻量级日期时间操作(类似 JavaScript 的 moment.js
)。
特点:
- 自然语言解析
- 简单的时间加减
实例:
#juzicode.com/VX公众号:juzicode
import moment
date = moment.date("tomorrow at noon")
print(date)
7. times
功能:专注于时间戳操作。
特点:
- 时间戳解析和格式化
- 简单的时间戳计算
实例:
#juzicode.com/VX公众号:juzicode
import times
timestamp = times.now()
print(timestamp)
8. croniter
功能:解析和计算 cron 表达式。
特点:
- 支持 cron 表达式解析
- 计算下一次运行时间
实例:
#juzicode.com/VX公众号:juzicode
from croniter import croniter
from datetime import datetime
cron = croniter("0 12 * * *", datetime.now())
next_run = cron.get_next(datetime)
print(next_run)
9. business-calendar
功能:处理工作日和假期。
特点:
- 自定义工作日历
- 计算工作日差异
实例:
#juzicode.com/VX公众号:juzicode
from business_calendar import Calendar
from datetime import datetime, timedelta
cal = Calendar()
start_date = datetime(2023, 10, 1)
end_date = start_date + timedelta(days=10)
workdays = cal.busdaycount(start_date, end_date)
print(workdays)
10. workalendar
功能:处理全球工作日和假期。
特点:
- 支持多国假期规则
- 计算工作日间隔
实例:
#juzicode.com/VX公众号:juzicode
from workalendar.asia import China
from datetime import datetime
cal = China()
start_date = datetime(2023, 10, 1)
end_date = datetime(2023, 10, 10)
workdays = cal.get_working_days_delta(start_date, end_date)
print(workdays)
总结
库名 | 主要用途 | 特点 |
---|---|---|
python-dateutil | 扩展 datetime 功能 | 自然语言解析、相对时间计算 |
pytz | 时区处理 | 全球时区数据库 |
arrow | 简化日期操作 | 人性化 API、时区转换 |
dateparser | 自然语言解析 | 多语言支持 |
delorean | 时区转换 | 简洁 API |
moment | 轻量级操作 | 类似 moment.js |
times | 时间戳处理 | 时间戳解析/格式化 |
croniter | Cron 表达式解析 | 计算下次运行时间 |
business-calendar | 工作日计算 | 自定义假期 |
workalendar | 全球工作日历 | 多国假期支持 |