Как вывести дату в стандартном формате?
Я столкнулся с проблемой в своем коде. Вот он:
import datetime
today = datetime.date.today()
print(today)
Этот код выводит: 2008-11-22
, что именно то, что мне нужно.
Однако, когда я пытаюсь добавить это значение в список, все начинает вести себя "странно". Вот код, который я использую:
import datetime
mylist = [datetime.date.today()]
print(mylist)
В результате я получаю вывод: [datetime.date(2008, 11, 22)]
. Как я могу получить простую строку с датой, например, 2008-11-22
?
5 ответ(ов)
Объекты date
, datetime
и time
в Python поддерживают метод strftime(format)
, который позволяет создавать строку, представляющую время в соответствии с заданным форматом.
Вот список кодов форматов с их направлением и значением:
%a Сокращённое название дня недели с учётом локали.
%A Полное название дня недели с учётом локали.
%b Сокращённое название месяца с учётом локали.
%B Полное название месяца с учётом локали.
%c Соответствующее представление даты и времени с учётом локали.
%d День месяца в десятичном формате [01,31].
%f Микросекунда в десятичном формате [0,999999], дополненная нулями слева.
%H Час (24-часовой формат) в десятичном формате [00,23].
%I Час (12-часовой формат) в десятичном формате [01,12].
%j День года в десятичном формате [001,366].
%m Месяц в десятичном формате [01,12].
%M Минуты в десятичном формате [00,59].
%p Соответствующий AM или PM с учётом локали.
%S Секунда в десятичном формате [00,61].
%U Номер недели в году (воскресенье как первый день недели).
%w День недели в десятичном формате [0(воскресенье),6].
%W Номер недели в году (понедельник как первый день недели).
%x Соответствующее представление даты с учётом локали.
%X Соответствующее представление времени с учётом локали.
%y Год без века в десятичном формате [00,99].
%Y Год с веком в десятичном формате.
%z Смещение UTC в формате +HHMM или -HHMM.
%Z Название часового пояса (пустая строка, если объект naive).
%% Символ '%' в литерале.
Так мы можем использовать модули datetime и time в Python:
import time
import datetime
print("Время в секундах с начала эпохи: %s" % time.time())
print("Текущая дата и время: ", datetime.datetime.now())
print("Или так: ", datetime.datetime.now().strftime("%y-%m-%d-%H-%M"))
print("Текущий год: ", datetime.date.today().strftime("%Y"))
print("Месяц года: ", datetime.date.today().strftime("%B"))
print("Номер недели в году: ", datetime.date.today().strftime("%W"))
print("День недели: ", datetime.date.today().strftime("%w"))
print("День года: ", datetime.date.today().strftime("%j"))
print("День месяца: ", datetime.date.today().strftime("%d"))
print("День недели: ", datetime.date.today().strftime("%A"))
Результат будет выглядеть примерно так:
Время в секундах с начала эпохи: 1349271346.46
Текущая дата и время: 2012-10-03 15:35:46.461491
Или так: 12-10-03-15-35
Текущий год: 2012
Месяц года: Октябрь
Номер недели в году: 40
День недели: 3
День года: 277
День месяца: 03
День недели: Среда
Это пример того, как работать с датами и временем в Python, используя форматирование.
Вот более короткий способ получить строковое представление текущей даты и времени:
>>> import time
>>> time.strftime("%Y-%m-%d %H:%M")
'2013-11-19 09:38'
Этот код использует модуль time
, чтобы отформатировать дату и время в желаемом виде.
Чтобы конвертировать текущее время в обычный формат, вы можете использовать модуль datetime
в Python. Вот пример кода, который показывает, как это сделать:
import datetime
# Получаем текущее время
d_date = datetime.datetime.now()
# Конвертируем в формат: ГГГГ-ММ-ДД ЧЧ:ММ:СС AM/PM
reg_format_date = d_date.strftime("%Y-%m-%d %I:%M:%S %p")
print(reg_format_date)
# Другие форматы дат
# Формат: ДД ММММ ГГГГ ЧЧ:ММ:СС AM/PM
reg_format_date = d_date.strftime("%d %B %Y %I:%M:%S %p")
print(reg_format_date)
# Формат: ГГГГ-ММ-ДД ЧЧ:ММ:СС в 24-часовом формате
reg_format_date = d_date.strftime("%Y-%m-%d %H:%M:%S")
print(reg_format_date)
Результат
При выполнении приведенного выше кода, вы получите вывод, похожий на следующий (значения будут зависеть от текущего времени):
2016-10-06 01:21:34 PM
06 October 2016 01:21:34 PM
2016-10-06 13:21:34
Вы можете комбинировать различные коды формата в strftime
, чтобы получить нужный вам стиль отображения даты и времени.
Для форматирования даты и времени в Python с помощью метода format
, вы можете использовать библиотеку datetime
. Вот несколько примеров:
- Чтобы получить текущую дату в формате
дд.мм.гггг
, вы можете сделать так:
from datetime import datetime
print("{:%d.%m.%Y}".format(datetime.now()))
Вывод: '25.12.2013' (в зависимости от текущей даты).
- Если вы хотите включить текст в форматированный вывод, можно сделать это следующим образом:
from datetime import datetime
print("{} - {:%d.%m.%Y}".format("Сегодня", datetime.now()))
Вывод: 'Сегодня - 25.12.2013' (в зависимости от текущей даты).
- Вы также можете получить день недели для текущей даты:
from datetime import date
print("{:%A}".format(date.today()))
Вывод: 'Среда' (или другой день недели в зависимости от текущей даты).
- Если вам нужно создать имя файла на основе имени модуля и текущей даты с временем, вы можете сделать это так:
from datetime import datetime
print('{}__{:%Y.%m.%d__%H-%M}.log'.format(__name__, datetime.now()))
Вывод: '__main__2014.06.09__16-56.log' (в зависимости от текущей даты и времени).
Используя эти примеры, вы можете легко форматировать даты и время в соответствии с вашими потребностями!
Простой ответ:
datetime.date.today().isoformat()
Преобразование даты в datetime в Python
Как получить день недели по заданной дате?
Добавление дней к дате в Python
Как рассчитать количество дней между двумя заданными датами
Итерация по диапазону дат в Python