哪些字符串 dateutil无法解析 但pendulum可以解析

dateutil无法解析包含汉字的时间字符串,但pendulum可以解析,例如:“2019年9月20日”。


Pendulum 是一个强大的 Python 日期时间库,它解决了内置 datetime 模块的一些限制,并提供了更多功能。让我们来看看 Pendulum 相对于 dateutil 的优势。

  1. 日期时间解析:
  • dateutil 是 Python 中常用的日期时间解析库,但它对日期格式有一些限制。例如,它使用了不同的格式代码 %Y%m%d
  • Pendulum 允许我们使用更常见的格式代码,如 YYYY-MM-DD HH:mm:ss,并且完全支持 RFC 3339 和 ISO 8601 格式,以及其他一些常见格式¹.
  • 此外,Pendulum 集成了许多常见的日期时间扩展,包括 dateutil。如果我们希望库依赖于 dateutil 解析器,我们可以传递标志 strict=False¹.
  1. 时区:
  • Pendulum 最令人印象深刻的功能之一是时区处理。内置 datetime 模块在处理时区时存在一些问题。
  • 使用 Pendulum,我们可以轻松地创建带有时区的日期时间对象。例如:
  • 墨尔本时间:pdl.datetime(2021, 11, 6, tz='Australia/Melbourne')
  • 布里斯班时间:pdl.datetime(2021, 11, 6, tz='Australia/Queensland')¹.
  • Pendulum 还允许我们比较具有不同时区的日期时间对象,并获得确切结果。
  1. 字符串格式化:
  • 将日期时间解析为字符串后,输出具有格式的日期时间字符串很重要。
  • Pendulum 提供了多种“to string”方法,例如:
  • dt.to_date_string():仅包含日期
  • dt.to_time_string():仅包含时间
  • dt.to_formatted_date_string():月份缩写、年份
  • dt.to_day_datetime_string():日期、月份缩写、年份、hh:mm am/pm
  • dt.to_iso8601_string():ISO 9601 标准
  • dt.to_atom_string():Atom 格式
  • dt.to_cookie_string():Cookie 样式格式¹.
  1. 人类可读性:
  • Pendulum 可以通过 diff_for_humans() 方法改进日期时间对象的比较。它返回一个非常人性化的输出。
  1. 查找相对日期时间:
  • Pendulum 可以根据给定的日期时间查找相对日期时间,而不需要使用 dateutil 中的 relativedelta

总之,Pendulum 是一个功能强大且易于使用的日期时间库,可以替代 dateutil 并提供更多功能。¹³⁴



当涉及到日期时间字符串的解析时,Pendulum 确实提供了一些优势,特别是相对于 dateutil。让我为你举例说明一些 Pendulum 可以识别但 dateutil 无法识别的字符串。

  1. 常见日期时间格式:
  • 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')
  1. 更灵活的解析器:
  • Pendulum 集成了许多常见的日期时间扩展,包括 dateutil。如果我们希望库依赖于 dateutil 解析器,我们可以传递标志 strict=False
  • 例如,以下代码将字符串解析为日期对象,即使格式不完全匹配,也能正常工作:
# 解析日期字符串,即使格式不完全匹配
dt = pdl.parse('21-11-06', strict=False)
  1. 只有数字的日期时间:
  • 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库。