Python как вывести формат времени

Коды форматирования для функций .strftime() и .strptime(). модуля datetime.

Все объекты datetime.date() , datetime.datetime() и datetime.time() поддерживают метод .strftime(format) для создания строки, представляющей время под контролем явной строки формата.

И наоборот, метод класса datetime.datetime.strptime() создает объект datetime.datetime() из строки, представляющей дату и время в строке, соответствующей формату.

Смотрите примеры форматирования объектов модуля datetime в строки с датой и временем, а так же преобразования из строки в объекты модуля datetime .

Правила форматирования strftime() и strptime() .

Ниже приведен список всех кодов форматирования, которые требуются в стандарте языка C 1989 года, они работают на всех платформах со стандартной реализацией C.

Код Значение Пример Замечания
%a Сокращенное название дня недели в локали по умолчанию. Sun, Mon, …, Sat (en_US); So, Mo, …, Sa (de_DE) (1)
%A Полное название дня недели в локали по умолчанию. Sunday, Monday, …, Saturday (en_US); Sonntag, Montag, …, Samstag (de_DE) (1)
%w День недели как число, где 0 это Воскресение и 6 — суббота. 0, 1, …, 6
%d День месяца в виде десятичного числа с нулем. 01, 02, …, 31 (9)
%b Месяц как сокращенное название в локали по умолчанию. Jan, Feb, …, Dec (en_US);Jan, Feb, …, Dez (de_DE) (1)
%B Месяц как полное название в локали по умолчанию. January, February, …, December (en_US);Januar, Februar, …, Dezember (de_DE) (1)
%m Месяц в виде десятичного числа с добавлением нуля. 01, 02, …, 12 (9)
%y Год без столетия как десятичное число с нулем. 00, 01, …, 99 (9)
%Y Год с веком как десятичное число. 0001, 0002, …, 2013, 2014, …, 9998, 9999 (2)
%H Час (24-часовой формат) в виде десятичного числа с добавлением нуля. 00, 01, …, 23 (9)
%I Час (12-часовые часы) в виде десятичного числа с добавлением нуля. 01, 02, …, 12 (9)
%p Локальный эквивалент либо AM, либо PM. AM, PM (en_US);am, pm (de_DE) (1), (3)
%M Минута как десятичное число с добавлением нуля. 00, 01, …, 59 (9)
%S Секунда как дополненное нулями десятичное число. 00, 01, …, 59 (4), (9)
%f Микросекунда как десятичное число, дополненное нулями слева. 000000, 000001, …, 999999 (5)
%z Смещение UTC в форме `±HHMM[SS[.ffffff]]` или пустая строка, если объект наивный. (empty), +0000, -0400, +1030, +063415, -030712.345216 (6)
%Z Имя часового пояса или пустая строка, если объект наивный. (empty), UTC, EST, CST
%j День года в виде десятичного числа с нулем. 001, 002, …, 366 (9)
%U Номер недели в году (воскресенье — первый день недели) в виде десятичного числа с добавлением нуля. Все дни в новом году, предшествующем первому воскресенью, считаются на неделе 0. 00, 01, …, 53 (7), (9)
%W Номер недели в году (понедельник — первый день недели) в виде десятичного числа. Все дни в новом году, предшествующем первому понедельнику, считаются на неделе 0. 00, 01,…, 53 (7), (9)
%c Соответствие локали дате и времени. Tue Aug 16 21:30:00 1988 (en_US); Di 16 Aug 21:30:00 1988 (de_DE) (1)
%x Соответствующее представление даты локали. 08/16/88 (None);08/16/1988 (en_US);16.08.1988 (de_DE) (1)
%X Соответствующее время локали. 21:30:00 (en_US);21:30:00 (de_DE) (1)
%% Буквальный символ ‘%’. %

Несколько дополнительных директив, не требуемых стандартом C89, включены для удобства. Все эти параметры соответствуют значениям даты ISO 8601.

Код Значение Пример Замечания
%G ISO 8601 год со столетием, который содержит большую часть недели ISO (%V). 0001, 0002, …, 2013, 2014, …, 9998, 9999 (8)
%u ISO 8601 День недели в виде десятичного числа, где 1 — понедельник. 1, 2, …, 7
%V ISO 8601 неделя в виде десятичного числа с понедельником в качестве первого дня недели. Неделя 01 — неделя, содержащая 4 января. 01, 02, …, 53 (8), (9)

Дополнительные директивы могут быть недоступны на всех платформах при использовании с методом .strftime() . Коды ISO 8601 year и ISO 8601 week не являются взаимозаменяемыми с указанными выше директивами о номере года и недели. Вызов strptime() с неполными или неоднозначными директивами ISO 8601 вызовет исключение ValueError .

Полный набор поддерживаемых кодов формата варьируется в зависимости от платформы, потому что Python вызывает функцию strftime() библиотеки языка С. Чтобы увидеть полный набор кодов формата, поддерживаемых на вашей платформе, обратитесь к документации.

Технические детали.

Вообще, метод d.strftime(fmt) действует как time.strftime() модуля time time.strftime(fmt, d.timetuple()) , хотя не все объекты поддерживают метод timetuple() .

За исключением случаев, когда формат включает субсекундные компоненты или информацию о смещении часового пояса, которые поддерживаются в конструкторе datetime.datetime.strptime, но отбрасываются time.strptime.

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

По той же причине обработка строк формата, содержащих кодовые точки Unicode, которые не могут быть представлены в кодировке текущей локали, также зависит от платформы. На некоторых платформах такие кодовые точки сохраняются без изменений в выводе, в то время как на других, метод .strftime() может вызывать исключение UnicodeError или возвращать пустую строку.

Замечания:

  1. Поскольку формат зависит от текущей локали, необходимо соблюдать осторожность при предположении о выходном значении. Порядок полей будет различаться, например “month/day/year” или “day/month/year”, а выходные данные могут содержать символы Юникода, закодированные с использованием кодировки по умолчанию для локали (например, если текущим языковым стандартом является ja_JP, Кодировка по умолчанию может быть любой из eucJP , SJIS или utf-8 . Используйте функцию locale.getlocale() для определения кодировки текущей локали.
  2. Метод .strptime() может анализировать годы во всем диапазоне [1, 9999] , но годы должны быть заполнены нулями до ширины из 4 цифр.
  3. При использовании с методом .strptime() код форматирования %p влияет только на поле выходного часа, если код форматирования %I используется для анализа часа.
  4. В отличие от модуля time , модуль datetime не поддерживает високосные секунды.
  5. При использовании с методом .strptime() код форматирования %f принимает от одной до шести цифр и ноль справа. Код %f является расширением набора символов формата в стандарте C, но реализовано отдельно в объектах datetime и поэтому всегда доступно.

Для «наивного» объекта, коды формата %z и %Z заменяются пустыми строками.
Для «осведомленного объекта»:

  • %z — utcoffset() преобразуется в строку вида ±HHMM[SS[.ffffff]] , где HH — это двухзначная строка, указывающая количество часов смещения UTC, MM — двузначная строка, указывающая номер смещения UTC. Минут, SS — это двузначная строка, указывающая количество секунд смещения UTC, а ffffff — это шестизначная строка, указывающая число микросекунд смещения UTC. Часть ffffff опускается, когда смещение составляет целое число секунд, а часть ffffff и SS опускается, когда смещение составляет целое число минут. Например, если utcoffset() возвращает timedelta(hours=-3, minutes=-30) , то %z заменяется строкой ‘-0330’ .
  • %Z — Если tzname() возвращает None , то %Z заменяется пустой строкой. В противном случае %Z заменяется возвращаемым значением, которое должно быть строкой.

При использовании метода .strptime() коды %U и %W используются только в вычислениях, если указаны день недели и календарный год %Y .

Похожий на коды форматирования %U и %W , код %V используется только в вычислениях, когда день недели и год ISO %G указываются в строке формата .strptime() . Также обратите внимание, что коды %G и %Y не являются взаимозаменяемыми.

При использовании с методом .strptime() начальный ноль необязателен для форматов %d , %m , %H , %I , %M , %S , %J , %U , %W и %V . Формат %y требует начального нуля.

Источник

Форматирование даты и времени в Python

Сегодня рассмотрим два метода strftime и strptime из стандартной библиотеки datetime в языке программирования Python.

Описание формата strftime

Кратко говоря, strftime преобразует объект date в строковую дату.

Это выглядит так: dateobject.strftime(format).

«Format» — это желаемый формат строки даты, который хочет получить пользователь. Формат строится с использованием кодов, приведенных ниже:

  • %a — будний день сокращенно (Пн, Вт,…)
  • %A — будний день полностью (Понедельник, Вторник,…)
  • %w — будний день, как десятичное число (1, 2, 3,…)
  • %d — день месяца в числах (01, 02, 03,…)
  • %b — месяцы сокращенно (Янв, Фев,…)
  • %B — название месяцев полностью (Январь, Февраль,…)
  • %m — месяцы в числах (01, 02, 03,…)
  • %y — года без века (19, 20, 21)
  • %Y — года с веком (2019, 2020, 2021)
  • %H — 24 часа в сутки (с 00 до 23)
  • %I — 12 часов в сутки (с 01 до 12)
  • %p — AM и PM (00-12 и 12-00)
  • %M — минуты (от 00 до 59)
  • %S — секунды (от 00 до 59)
  • %f — миллисекунды (6 десятичных чисел)

Использование strftime

Давайте рассмотрим конкретный пример — преобразование текущего времени в строку даты:

Давайте теперь преобразуем приведенный выше объект datetime в строку datetime:

Если вы хотите напечатать месяц в качестве сокращенного названия, замените %m на %b, как показано ниже:

И ещё один пример:

Преобразование даты в strftime

Преобразование даты в строку очень похоже на преобразование datetime в строку.

Рассмотрим пример — преобразование текущего объекта даты в строку даты:

Давайте преобразуем приведенный выше объект date в строку даты с помощью метода strftime:

Отображение миллисекунд

Чтобы получить строку даты с миллисекундами, используйте код формата %f в конце, как показано ниже:

Описание формата strptime

Strptime используется для преобразования строки в объект datetime. Тоесть обратное действие методу strftime. Это выглядит так: strptime(date_string, format).

Разберем пример: strptime(«9/23/20», «%d/%m/%y»). Формат «%d/%m/%y» представляет собой соответствующий формат «9/23/20». Результатом приведенной выше команды будет объект datetime.

Формат строится с использованием заранее определенных кодов. Есть много кодов на выбор. Наиболее важные из них были перечислены ранее (смотрите 1 пункт в содержании).

Использование метода strptime

Преобразуем строку даты в объект datetime:

Заключениеы

На этом всё. Желаю удачи в программировании!

Источник

Модуль time в Python

В Python есть модуль time , который используется для решения задач, связанных со временем. Для использования определенных в нем функций необходимо сначала его импортировать:

Дальше перечислены самые распространенные функции, связанные со временем.

Python time.time()

Функция time() возвращает число секунд, прошедших с начала эпохи. Для операционных систем Unix 1 января 1970, 00:00:00 (UTC) — начало эпохи (момент, с которого время пошло).

Python time.ctime()

Функция time.ctime() принимает в качестве аргумента количество секунд, прошедших с начала эпохи, и возвращает строку, представляющую собой местное время.

Если запустить программу, то вывод будет выглядеть так:

Python time.sleep()

Функция sleep() откладывает исполнение текущего потока на данное количество секунд.

Прежде чем переходить к другим функциям, связанных со временем, нужно вкратце разобраться с классом time.struct_time .

Класс time.struct_time

Некоторые функции в модуле time , такие как gmtime() , asctime() и другие, принимают объект time.struct_time в качестве аргумента или возвращают его.

Вот пример объекта time.struct_time .

Индекс Атрибут Значения
0 tm_year 0000, …, 2019, …, 9999
1 tm_mon 1, 2, …, 12
2 tm_mday 1, 2, …, 31
3 tm_hour 0, 1, …, 23
4 tm_min 0, 1, …, 59
5 tm_sec 0, 1, …, 61
6 tm_wday 0, 1, …, 6; Monday is 0
7 tm_yday 1, 2, …, 366
8 tm_isdst 0, 1 or -1

К значениям (элементам) объекта time.struct_time доступ можно получить как с помощью индексов, так и через атрибуты.

Python time.localtime()

Функция localtime() принимает в качестве аргумента количество секунд, прошедших с начала эпохи, и возвращает stuct_time в локальном времени.

Вывод этой программы будет следующим:

Если localtime() передан аргумент None , то вернется значение из time() .

Python time.gmtime()

Функция gmtime() принимает в качестве аргумента количество секунд, прошедших с начала эпохи и возвращает struct_time в UTC.

Вывод этой программы будет следующим:

Если gmtime() передан аргумент None , то вернется значение time() .

Python time.mktime()

Функция mktime() принимает struct_time (или кортеж, содержащий 9 значений, относящихся к struct_time ) в качестве аргумента и возвращает количество секунд, прошедших с начала эпохи, в местном времени. Это функция, обратная localtime() .

Следующий пример показывает, как связаны mktime() и localtime() .

Вывод будет следующий:

Python time.asctime()

Функция asctime() принимает struct_time (или кортеж, содержащий 9 значений, относящихся к struct_time ) в качестве аргумента и возвращает строку, представляющую собой дату.

Python time.strftime()

Функция strftime принимает stuct_time (или соответствующий кортеж) в качестве аргумента и возвращает строку с датой в зависимости от использованного формата. Например:

Вывод будет следующий:

Здесь %Y , %m , %d , %H и другие — элементы форматирования.

  • %Y — год [0001,…, 2019, 2020,…, 9999]
  • %m — месяц [01, 02, …, 11, 12]
  • %d — день [01, 02, …, 30, 31]
  • %H — час [00, 01, …, 22, 23
  • %M — минута [00, 01, …, 58, 59]
  • %S — секунда [00, 01, …, 58, 61]

Python time.strptime()

Функция strptime() делает разбор строки python, в которой упоминается время и возвращает struct_time .

Источник

Читайте также:  Чем отмыть яйцо с одежды
Оцените статью