1

我有一个大型销售数据库,其中第一列是购买日期。问题是这些日期中的一些是以DD.MM.YY格式输入的,一些是 inYY.MM.DD和一些 in YYYY/MM/DD。我想让它们都变成相同的格式。我能做到这一点的最干净的方法是什么?

注意 1:我正在考虑做一系列ifs 但这将是很多条件,所以我想知道是否有更清洁的捷径。

注 2:另一个复杂情况是日期是 Jalaali 日历而不是公历。我有将它们转换为公历的函数,但我需要将正确的year, month, day参数传递给它;这就是为什么我想把它们都变成一种格式。但此外,这意味着如果您提供一些“仅限公历”的解决方案,例如dateutil.parser,它可能不起作用。

4

1 回答 1

0

发布此内容后,我立即找到/想到了解决方案,但我没有删除问题,而是决定发布答案,以防其他人遇到类似问题。

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
于 2018-05-02T22:01:06.270 回答