哪些字符串 dateutil无法解析 但pendulum可以解析
dateutil无法解析包含汉字的时间字符串,但pendulum可以解析,例如:“2019年9月20日”。
Pendulum 是一个强大的 Python 日期时间库,它解决了内置 datetime 模块的一些限制,并提供了更多功能。让我们来看看 Pendulum 相对于 dateutil 的优势。
- 日期时间解析:
- dateutil 是 Python 中常用的日期时间解析库,但它对日期格式有一些限制。例如,它使用了不同的格式代码
%Y%m%d。 - Pendulum 允许我们使用更常见的格式代码,如
YYYY-MM-DD HH:mm:ss,并且完全支持 RFC 3339 和 ISO 8601 格式,以及其他一些常见格式¹. - 此外,Pendulum 集成了许多常见的日期时间扩展,包括 dateutil。如果我们希望库依赖于 dateutil 解析器,我们可以传递标志
strict=False¹.
- 时区:
- Pendulum 最令人印象深刻的功能之一是时区处理。内置 datetime 模块在处理时区时存在一些问题。
- 使用 Pendulum,我们可以轻松地创建带有时区的日期时间对象。例如:
- 墨尔本时间:
pdl.datetime(2021, 11, 6, tz='Australia/Melbourne') - 布里斯班时间:
pdl.datetime(2021, 11, 6, tz='Australia/Queensland')¹.
- Pendulum 还允许我们比较具有不同时区的日期时间对象,并获得确切结果。
- 字符串格式化:
- 将日期时间解析为字符串后,输出具有格式的日期时间字符串很重要。
- Pendulum 提供了多种“to string”方法,例如:
dt.to_date_string():仅包含日期dt.to_time_string():仅包含时间dt.to_formatted_date_string():月份缩写、年份dt.to_day_datetime_string():日期、月份缩写、年份、hh:mm am/pmdt.to_iso8601_string():ISO 9601 标准dt.to_atom_string():Atom 格式dt.to_cookie_string():Cookie 样式格式¹.
- 人类可读性:
- Pendulum 可以通过
diff_for_humans()方法改进日期时间对象的比较。它返回一个非常人性化的输出。
- 查找相对日期时间:
- Pendulum 可以根据给定的日期时间查找相对日期时间,而不需要使用 dateutil 中的
relativedelta。
总之,Pendulum 是一个功能强大且易于使用的日期时间库,可以替代 dateutil 并提供更多功能。¹³⁴
当涉及到日期时间字符串的解析时,Pendulum 确实提供了一些优势,特别是相对于 dateutil。让我为你举例说明一些 Pendulum 可以识别但 dateutil 无法识别的字符串。
- 常见日期时间格式:
- Pendulum 允许我们使用更常见的日期时间格式代码,例如
YYYY-MM-DD HH:mm:ss,并且完全支持 RFC 3339 和 ISO 8601 格式,以及其他一些常见格式¹. - 例如,我们可以使用以下代码将字符串解析为 Pendulum 的日期时间对象:
import pendulum as pdl
# 解析日期时间字符串
dt = pdl.from_format('2021-11-06 22:00:00', 'YYYY-MM-DD HH:mm:ss')- 更灵活的解析器:
- Pendulum 集成了许多常见的日期时间扩展,包括 dateutil。如果我们希望库依赖于 dateutil 解析器,我们可以传递标志
strict=False。 - 例如,以下代码将字符串解析为日期对象,即使格式不完全匹配,也能正常工作:
# 解析日期字符串,即使格式不完全匹配
dt = pdl.parse('21-11-06', strict=False)- 只有数字的日期时间:
- Pendulum 还支持只有数字的日期时间格式。例如,指定年份、周数和那一周的日期,Pendulum 能够给出正确的日期时间。
- 如果我们特别想要一个日期对象或一个时间对象,只需指定
exact=True,这比 Python 内置的 datetime 模块容易得多。
总之,Pendulum 是一个功能强大且易于使用的日期时间库,可以替代 dateutil 并提供更多功能。¹³⁵
Pendulum、datetime和dateutil都是 Python 中用于处理日期和时间的库。它们之间的区别如下:
1、datetime是 Python 的内置模块,提供了基本的日期和时间操作功能,如创建、比较、格式化和计算日期时间。
from datetime import datetime
now = datetime.now()
print(now.strftime("%Y-%m-%d %H:%M:%S"))
2、dateutil是一个第三方库,它扩展了datetime模块的功能,提供了更方便的日期时间解析、格式化和操作功能。
from dateutil.parser import parse
dt = parse("2023-07-24 14:30:00")
print(dt.strftime("%Y-%m-%d %H:%M:%S"))
3、Pendulum是一个更高级的日期和时间处理库,它提供了更友好的 API 和更多的功能,例如添加和减去时间间隔、解析自然语言的日期时间字符串等。
from pendulum import pendulum
now = pendulum.now()
print(now.strftime("%Y-%m-%d %H:%M:%S"))
总的来说,如果你只需要基本的日期时间操作,可以使用datetime模块。如果你需要更方便的日期时间解析和格式化功能,可以使用dateutil库。如果你需要更高级的日期时间操作和自然语言处理功能,可以使用Pendulum库。
















