【问题标题】:Organizing date format (non-Gregorian calendar) - Python 3组织日期格式(非公历) - Python 3
【发布时间】:2018-10-13 02:44:35
【问题描述】:

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

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

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

【问题讨论】:

    标签: python pandas date jalali-calendar


    【解决方案1】:

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

    tl;dr - 我刚刚为 dateutil.parser 添加了一个世纪选项。我不知道怎么做,但我找到了this

    这是我的结束代码:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多