我有一个大型销售数据库,其中第一列是购买日期。问题是其中一些日期以DD.MM.YY
格式输入,有些以YY.MM.DD
输入,有些以YYYY/MM/DD
输入。我想将它们全部设置为相同的格式。我能做的最干净的方法是什么?
注意1:我正在考虑做一系列if
,但这将是很多条件,所以我想知道是否有更干净的快捷方式。
注2:另一个复杂因素是日期是贾拉利日历而不是公历。我有一个将它们转换为公历的函数,但我需要将正确的year, month, day
参数传递给它;这就是为什么我想将它们全部采用单一格式的原因。但此外,这意味着如果您提供一些"仅限公历"的解决方案,例如dateutil.parser
,它可能不起作用。
发布此内容后,我立即自己找到/想到了一个解决方案,但我决定发布答案,而不是删除问题,以防其他人遇到类似的问题。
tl;博士 - 我刚刚为dateutil.parser
添加了一个世纪选项.我不知道该怎么做,但我找到了这个。
这是我的结束代码:
from khayyam import JalaliDate
from dateutil.parser import parse, parserinfo
class MyParserInfo(parserinfo):
def convertyear(self, year, *args, **kwargs):
if year < 100:
year += 1300
return year
if __name__ == '__main__':
dt = parse("9.12.96", MyParserInfo()).date()
a=JalaliDate(dt.year, dt.month, dt.day).todate()
print(dt)
print(a)
#1396-09-12
#2017-12-03