Как преобразовать дату в формат `yyyy-mm-dd`?

Используйте метод strftime() объекта datetime:

  from datetime import datetime

  date_obj = datetime.now()  # Или datetime.strptime("2023-10-27", "%Y-%m-%d") для парсинга строки
  formatted_date = date_obj.strftime("%Y-%m-%d")
  print(formatted_date)
  

Для преобразования даты в формат yyyy-mm-dd в Python можно использовать модуль datetime.

Вот несколько способов:

  1. Использование strftime():
    import datetime
    
    # Получаем текущую дату
    today = datetime.date.today()
    
    # Преобразуем в строку в формате yyyy-mm-dd
    formatted_date = today.strftime("%Y-%m-%d")
    
    print(formatted_date)  # Вывод: 2024-10-27 (пример)
    
    # Пример с произвольной датой
    date_object = datetime.date(2023, 12, 25)
    formatted_date = date_object.strftime("%Y-%m-%d")
    print(formatted_date) # Вывод: 2023-12-25
    
    • strftime() - это метод объекта datetime, который позволяет форматировать дату и время в строку, используя специальные коды.
    • %Y - год с четырьмя цифрами.
    • %m - месяц с двумя цифрами (с ведущим нулем).
    • %d - день с двумя цифрами (с ведущим нулем).
  2. Использование f-строк (Python 3.6+):
    import datetime
    
    today = datetime.date.today()
    
    formatted_date = f"{today.year}-{today.month:02}-{today.day:02}"
    
    print(formatted_date)  # Вывод: 2024-10-27 (пример)
    
    date_object = datetime.date(2023, 1, 5)
    formatted_date = f"{date_object.year}-{date_object.month:02}-{date_object.day:02}"
    print(formatted_date) # Вывод: 2023-01-05
    
    • Этот способ более современный и читаемый.
    • :02 форматирует месяц и день, добавляя ведущий ноль, если число состоит из одной цифры.
  3. Использование метода isoformat():
    import datetime
    
    today = datetime.date.today()
    
    formatted_date = today.isoformat()
    
    print(formatted_date) # Вывод: 2024-10-27 (пример)
    
    date_object = datetime.date(2023, 5, 10)
    formatted_date = date_object.isoformat()
    print(formatted_date) # Вывод: 2023-05-10
    
    • isoformat() возвращает дату в формате ISO 8601, который включает формат yyyy-mm-dd по умолчанию.
    • Это самый простой способ, если требуется именно формат ISO 8601.

Какой способ выбрать?

Выбор зависит от ваших предпочтений и требований к читаемости кода. strftime() самый универсальный, так как позволяет задать произвольный формат. F-строки удобны для простой подстановки значений и легко читаются. isoformat() - самый короткий, если нужен формат ISO 8601.

Обработка ошибок:

Важно убедиться, что у вас есть корректный объект datetime.date или datetime.datetime перед форматированием. Если у вас есть строка, представляющая дату, сначала ее нужно преобразовать в объект datetime с помощью datetime.strptime(), и уже затем форматировать.

import datetime

date_string = "2023/03/15"
try:
    date_object = datetime.datetime.strptime(date_string, "%Y/%m/%d").date() # или datetime.datetime.strptime("%Y/%m/%d") если нужно время
    formatted_date = date_object.strftime("%Y-%m-%d")
    print(formatted_date) # Вывод: 2023-03-15
except ValueError:
    print("Неверный формат даты")
0