Формат даты организации (негригорианский календарь) - Python 3 - PullRequest
0 голосов
/ 03 мая 2018

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

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

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

1 Ответ

0 голосов
/ 03 мая 2018

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

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
...