Формат даты организации (негригорианский календарь) - Python 3

У меня есть большая база данных продаж, первый столбец которой - дата покупки. Проблема в том, что некоторые из этих дат введены в DD.MM.YY формат, некоторые в YY.MM.DD а некоторые в YYYY/MM/DD, Я хочу сделать их все в одном формате. Какой самый чистый способ, которым я могу сделать это?

Примечание 1: я думаю сделать серию ifс, но это было бы много условий, поэтому мне интересно, если есть более чистый ярлык.

Примечание 2: Дополнительным осложнением является то, что даты указаны в календаре Джалали, а не в григорианском. У меня есть функция, которая преобразует их в григорианский, но мне нужно передать правильный year, month, day аргументы этому; Вот почему я хочу привести их все в один формат. Но, кроме того, это означает, что если вы предлагаете некоторые "григорианские" решения, такие как dateutil.parser, это может не сработать.

1 ответ

Сразу после публикации я сам нашел / подумал о решении, но вместо того, чтобы удалить вопрос, я решил опубликовать ответ на случай, если кто-то еще столкнется с подобной проблемой.

tl; dr - я только что добавил опцию века 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
Другие вопросы по тегам