python 识别日期格式并进行转换

yfwxisqw  于 2023-01-08  发布在  Python
关注(0)|答案(3)|浏览(216)

有没有一种方法可以猜测字符串的日期格式,并将其他日期转换为与给定字符串相同的格式(例如YYYYMMDD)?
例如:

# Recognize the format as YYYYMMDD
date1 = '20221111'

# Recognize the format as YYYY-MM-DD and converts to YYYYMMDD
date2 = '2022-11-12'
7vhp5slm

7vhp5slm1#

可以使用dateutil.parser.parse(),它可以动态解析日期。
例如:

from dateutil import parser

date1 = '20221113'
date2 = '2022-11-13'

print(parser.parse(date1).strftime('%d-%m-%Y'))
print(parser.parse(date2).strftime('%Y%m%d'))

#13-11-2022
#20221113
mklgxw1f

mklgxw1f2#

我不太明白你说的“猜测日期格式”是什么意思,你是说改变Python处理日期的默认方式,因为这很难,如果不是不可能的话,其次,如果你想格式化文本,为什么不使用datetime。

from datetime import datetime
datetime.strptime("20221112", '%Y%m%d') # datetime.datetime(2022, 12, 11, 0, 0)
# Or you can also try
datetime.strptime("20221211", '%Y%d%m') # datetime.datetime(2022, 11, 12, 0, 0)

如果使用datetime.strptime时感到困扰,可以在函数中使用它

def format_time(time_str, format='%Y%m%d'):
  return datetime.strptime(time_str, format)
print(format_time("20231011")) # 2023-10-11 00:00:00

作为一个资源,我留给你这个,以帮助你的格式Python Strptime
当然,如果你不知道样本数据是怎么来的,你就只能默认解释了,因为不可能知道怎么解释,我个人会用YYYYMMDD

hujrc8aj

hujrc8aj3#

如果你不能确保所有的数据都遵循ISO这样的约定,那么另一种解决方案就是使用一些 Package 器函数,通过regex/ multiple try except块和datetime.strptime(pattern,string)来解析给定的字符串。

相关问题