我正在从旧系统转换许多不起眼的日期格式。日期将作为字符串解压缩/处理并转换为ISO 8601格式。
此特定函数尝试将YYMMDD0F转换为YYYYMMDD - 函数名称表示全部。从2000年开始的日期使这个混乱,显然这不是处理它们的最pythonic方式。如何使用dateutil.parser
?
def YYMMDD0FtoYYYYMMDD(date):
YY = date[0:2]
MM = date[2:4]
DD = date[4:6]
if int(YY) >= 78:
YYYY = '19%s' % YY
elif 0 <= int(YY) <= 77 and MM!='' and MM!='00':
YYYY = '20%s' % YY
else:
YYYY = '00%s' % YY
return "%s-%s-%s" % (YYYY, MM, DD)
答案 0 :(得分:1)
您不需要使用dateutil
,可以使用datetime.strptime
/.strftime
执行此操作:
from datetime import datetime
def YYMMDD0FtoYYYYMMDD(date):
return datetime.strptime(date[:6], "%y%m%d").strftime("%Y-%m-%d")
使用示例:
>>> YYMMDD0FtoYYYYMMDD('1403110F')
'2014-03-11'
答案 1 :(得分:1)
您可能需要查看datetime
模块。使用其日期格式化功能,您可以执行以下操作:
>>> import datetime as dt
>>> ds = '0104160F'
>>> parsed = dt.datetime.strptime(ds, "%y%m%d0F")
>>> parsed
datetime.datetime(2001, 4, 16, 0, 0)
>>> reformatted = dt.datetime.strftime(parsed, "%Y-%m-%d")
>>> reformatted
'20010416'
在您的函数中,您可以按如下方式使用它们:
def YYMMDD0FtoYYYYMMDD(date):
return dt.datetime.strftime(dt.datetime.strptime(date, "%y%m%d0F"), "%Y-%m-%d")