Подтвердить что ты не робот

Преобразование даты между DD/MM/YYYY и YYYY-MM-DD?

Используя Python script, мне нужно прочитать файл CVS, в котором даты формируются как DD/MM/YYYY, и конвертировать их в YYYY-MM-DD, прежде чем сохранять их в базе данных SQLite.

Это почти работает, но не получается, потому что я не предоставляю время:

from datetime import datetime

lastconnection = datetime.strptime("21/12/2008", "%Y-%m-%d")

#ValueError: time data did not match format:  data=21/12/2008  fmt=%Y-%m-%d
print lastconnection

Я предполагаю, что метод в объекте datetime очень легко выполняет это преобразование, но я не могу найти пример того, как это сделать. Спасибо.

4b9b3361

Ответ 1

Ваш примерный код неверен. Это работает:

import datetime

datetime.datetime.strptime("21/12/2008", "%d/%m/%Y").strftime("%Y-%m-%d")

Вызов strptime() анализирует первый аргумент в соответствии с форматом, указанным во втором, поэтому эти два должны совпадать. Затем вы можете вызвать strftime(), чтобы отформатировать результат в желаемый окончательный формат.

Ответ 2

вам сначала понадобится преобразовать строку в кортеж datetime, а затем преобразовать этот кортеж datetime в строку, он будет выглядеть следующим образом:

lastconnection = datetime.strptime("21/12/2008", "%d/%m/%Y").strftime('%Y-%m-%d')

Ответ 3

Кто-нибудь еще считает это пустой тратой для преобразования этих строк в объекты даты/времени для того, что является, в конце концов, простым преобразованием текста? Если вы уверены, что входящие даты будут действительны, вы можете просто использовать:

>>> ddmmyyyy = "21/12/2008"
>>> yyyymmdd = ddmmyyyy[6:] + "-" + ddmmyyyy[3:5] + "-" + ddmmyyyy[:2]
>>> yyyymmdd
'2008-12-21'

Это почти наверняка будет быстрее, чем переход к дате и от нее.

Ответ 4

Я новичок в программировании. Я хотел конвертировать из yyyy-mm-dd в dd/mm/yyyy, чтобы распечатать дату в формате, который люди используют в моей части мира и распознают.

Принятый ответ поднял меня на правильный путь.

Ответ, в который я попал, связан с моей проблемой:

import datetime

today_date = datetime.date.today()
print(today_date)

new_today_date = today_date.strftime("%d/%m/%Y")
print (new_today_date)

Первые две строки после оператора импорта дают сегодня дату в формате США (2017-01-26). Последние две строки преобразуют это в формат, признанный в Великобритании и других странах (26/01/2017).

Вы можете сократить этот код, но я оставил его как есть, потому что он полезен для меня как новичок. Надеюсь, это поможет начинающим программистам начать работу!