Конвертировать int в дату - PullRequest
0 голосов
/ 07 июня 2019

Я пытаюсь преобразовать гггг / мм / дд в дд / мм / гггг из целочисленных входных данных.

Когда я изменил шаблон внутри паретеза с datetime.date(year, month, day) на datetime.date(day, month, year), он возвращает Значение ошибки .

def acc_expiration():
    year = int(input('YEAR: '))
    month = int(input('MONTH: '))
    day = int(input('DAY: '))
    exp_date = datetime.date(day, month, year)
    return exp_date

ValueError: day is out of range for month

Ответы [ 2 ]

1 голос
/ 07 июня 2019

Из документации :

класс datetime.date (год, месяц, день)

Это означает, что вам нужно поместить аргументы в правильное положение, независимо от того, как вы хотите напечатать его позже.

Это должно работать:

def acc_expiration():
    year = int(input('YEAR: '))
    month = int(input('MONTH: '))
    day = int(input('DAY: '))
    exp_date = datetime.date(year, month, day)
    return exp_date

Теперь напечатаем его в формате дд / мм / гггг:

d = acc_expiration()
f = d.strftime('%d/%m/%Y')
print(f) # prints it formatted dd/mm/yyyy

Ваша ошибка в значении заключается в том, что вы задаете целое число года (целое число больше 31) в качестве аргумента дня, а для года вы даете целое число дня.

0 голосов
/ 07 июня 2019

Вы путаете объект с его представлением.

Посмотрите документы Python для Datetime ( здесь )

  1. Правильная последовательность для datetime.date: class datetime.datetime (год, месяц, день [, час [, минута [, секунда [, микросекунда [, tzinfo]]]]])

  2. Получив объект datetime, вы можете отформатировать его вывод различными способами в соответствии с вашими потребностями.

Это помогает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...