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')
我正在尝试查看日期列表是否为有效日期。我正在使用 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')