Python dateutil 日期转换

Python dateutil date conversion

我正在尝试查看日期列表是否为有效日期。我正在使用 dateutil 库,但我得到了奇怪的结果。例如,当我尝试以下操作时:

import dateutil.parser as parser
x = '10/84'
date = (parser.parse(x))
print(date.isoformat())

我得到的结果 1984-10-12T00:00:00 是错误的。有谁知道为什么这个 12 被添加到日期中?

parse() 方法解析字符串并使用解析的信息更新默认的 datetime 对象。如果 default 没有传递给这个函数,它使用 today 的第一秒。

这意味着您结果中的 12 是今天(当您是 运行 代码时),只有年份和月份从解析中更新字符串。

如果您需要解析日期字符串但不确定它是否是有效的日期值,那么您可以使用 try ... except 块来捕获解析错误。

import dateutil.parser as parser
x = '10/84'
try:
    date = (parser.parse(x))
    print(date.isoformat())
except ValueError as err:
    pass # handle the error

12 是当前日期。 dateutil 从当前 date/time 中获取组件来说明日期中缺少的日期或年份(它不会对月份执行此操作,仅对日期或年份执行此操作)。另一个例子是日期,如 - Janauary 20 - 这将被解析为 2015/01/12 从当前日期时间开始计算 2015 年。

遗憾的是,我还没有找到任何方法来阻止这种行为。

我认为对您来说最好的选择是列出您期望的有效日期时间格式,然后手动尝试 datetime.datetime.strptime,但 ValueError 除外。示例 -

def isdate(dt, fmt):
    try:
        datetime.datetime.strptime(dt, fmt)
        return True
    except ValueError:
        return False

validformats = [...]
dates =[...]

for x in dates:
    if any(isdate(x,fmt) for fmt in validformats):
        print(x, 'is valid date')