Как форматировать даты в Python

задняя часть Python GitHub Программа перевода самородков

вводить

Python поставляется с различными полезными объектами, которые можно использовать «из коробки». Например, объект даты является примером. Типы дат трудно манипулировать с нуля из-за сложности дат и времени. К счастью, объекты даты Python позволяют довольно легко преобразовывать даты в желаемый строковый формат.

Форматирование даты — одна из самых важных задач программиста. Разные локали имеют разные способы представления даты/времени, поэтому одной из ваших целей как программиста является отображение значений даты в удобочитаемом виде.

Например, вы можете захотеть представить значения даты в числовом формате, таком как «02-23-2018». С другой стороны, вам может понадобиться представить ту же дату в более длинном текстовом формате (например, «23 февраля 2018 г.»). В другом случае вы можете захотеть извлечь месяц в строковом формате из значения даты в числовом формате.

В этой статье мы изучим различные типы объектов даты и их функции.

модуль даты и времени

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

import datetime

мы можем использоватьtimeКлассы представляют значения времени. Свойства класса времени включают часы, минуты, секунды и микросекунды.

timeПараметр класса является необязательным. Хотя без указания каких-либо аргументов вы получите 0 раз (объектов), но вряд ли это будет то, что вам нужно большую часть времени.

Например, чтобы инициализировать объект времени со значениями 1 час, 10 минут, 20 секунд, 13 микросекунд, мы можем запустить следующую команду:

t = datetime.time(1, 10, 20, 13)

Давайте используем функцию печати, чтобы увидеть время:

print(t)

вывод:

01:10:20.000013

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

print('hour:', t.hour)

вывод:

hour: 1

Минуты, секунды или микросекунды указанного выше времени (объекта) можно получить следующим образом:

print('Minutes:', t.minute)
print('Seconds:', t.second)
print('Microsecond:', t.microsecond)

вывод:

Minutes: 10
Seconds: 20
Microseconds: 13

Календарные даты относятся кdateпредставительство класса. Примеры имеют свойства для года, месяца и дня.

давай позвонимtodayСпособ увидеть сегодняшнюю дату:

import datetime

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

вывод:

2018-09-15

Код вернет сегодняшнюю дату, поэтому вывод, который вы видите, зависит от даты запуска скрипта.

Теперь мы звонимctimeМетод печати даты в другом формате:

print('ctime:', today.ctime())

вывод:

ctime: Sat Sep 15 00:00:00 2018

ctimeбудет использовать более длинный формат даты и времени, чем в примерах, которые мы видели ранее. Этот метод в основном используется для преобразования времени Unix (секунды с 1 января 1970 г.) в строковый формат.

Вот как мы используемdateКласс отображает год, месяц и день:

print('Year:', today.year)
print('Month:', today.month)
print('Day :', today.day)

вывод

Year: 2018

Month: 9
Day : 15

Преобразование даты в строку с помощью strftime

Теперь, когда вы знаете, как создавать объекты времени и даты, давайте научимся форматировать их в более читаемые строки.

Для этого мы будем использоватьstrftimeметод. Этот метод может помочь нам преобразовать объект даты в удобочитаемую строку. Он принимает два параметра и имеет следующий синтаксис:

time.strftime(format, t)

Первый параметр это строка формата (в каком формате отображать дату и время, спасибоrocheersНапоминание), второй параметр — форматированное время, необязательное значение.

Этот метод можно использовать и вdatetimeвызов непосредственно на объект. Как показано в следующем примере:

import datetime

x = datetime.datetime(2018, 9, 15)

print(x.strftime("%b %d %Y %H:%M:%S"))

вывод:

Sep 15 2018 00:00:00

Мы используем следующие строки для форматирования даты:

  • %b: возвращает первые три символа названия месяца. В нашем случае возвращается "Sep"
  • %d: возвращает день месяца от 1 до 31. В нашем случае возвращается «15».
  • %Y: возвращает год в четырехзначном формате. В нашем случае возвращается «2018».
  • %H: возвращает час. В нашем случае возвращается «00».
  • %M: возвращает минуты от 00 до 59. В нашем случае возвращается «00».
  • %S: возвращает секунды от 00 до 59. В нашем случае возвращается «00».

У нас нет времени (объекта), поэтому значения времени все «00». В следующем примере показано, как отформатировать время:

import datetime

x = datetime.datetime(2018, 9, 15, 12, 45, 35)

print(x.strftime("%b %d %Y %H:%M:%S"))

вывод:

Sep 15 2018 12:45:35

Полный список кодов символов

В дополнение к строкам, указанным выше,strftimeМетод также использует несколько других директив для форматирования значений даты:

  • %a: возвращает первые три символа дня недели, например, ср.
  • %A: возвращает полное название дня недели, например, среда.
  • %B: Возвращает полное название месяца, например, сентябрь.
  • %w: возвращает день недели в виде числа от 0 до 6, где 0 означает воскресенье.
  • %m: Возвращает месяц в виде числа от 01 до 12.
  • %p: возвращает флаг AM/PM.
  • %y: возвращает год в двузначном формате, например, «18» вместо «2018».
  • %f: возвращает микросекунды от 000000 до 999999.
  • %Z: возвращает часовой пояс.
  • %z: возвращает смещение UTC.
  • %j: возвращает номер дня текущего года от 001 до 366.
  • %W: возвращает номер недели года от 00 до 53. Понедельник считается первым днем ​​недели.
  • %U: возвращает номер недели года от 00 до 53. Воскресенье считается первым днем ​​недели.
  • %c: возвращает локальную версию даты и времени.
  • %x: возвращает локальную версию даты.
  • %X: возвращает местную версию времени.

Примечание переводчика: исходный текст — будний день, который переводится как «будний день» после проверки некоторых источников, но рассмотрим следующий пример:

from datetime import datetime
x  = datetime.now()
x.strftime("%A")

вывод:

'Sunday'

Рассмотрим следующий пример:

import datetime

x = datetime.datetime(2018, 9, 15)

print(x.strftime('%b/%d/%Y'))

вывод:

Sep/15/2018

Вот как вы получаете только месяц:

print(x.strftime('%B'))

вывод:

September

Давайте просто покажем год:

print(x.strftime('%Y'))

вывод:

2018

В этом примере мы использовали код форматирования%Y. Обратите внимание, что его Y в верхнем регистре, теперь используется нижний регистр:

print(x.strftime('%y'))

вывод:

18 

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

Преобразование строки в дату с помощью strptime

strftimeметоды помогают нам преобразовать объект даты в удобочитаемую строку,strptimeНаоборот. Он работает со строками и преобразует их в объекты даты, понятные Python.

Это синтаксис этого метода:

datetime.strptime(string, format)

stringПараметр — это строковое значение, которое мы конвертируем в формат даты.formatАргумент представляет собой директиву, определяющую формат, в который будет преобразована дата.

Например, если нам нужно преобразовать строку «9/15/18» вdatetimeобъект.

Сначала мы импортируемdatetimeмодуль, мы будем использоватьfromключевое слово, чтобы иметь возможность ссылаться на определенную функцию в модуле без формата точки:

from datetime import datetime

Затем мы можем определить дату в виде строки:

str = '9/15/18'

при преобразовании строки в фактическийdatetimeДо появления объектов Python не мог понимать приведенные выше строки как дату и время. Мы можем позвонитьstrptimeМетод завершается успешно:

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

date_object = datetime.strptime(str, '%m/%d/%y')

Теперь давайте позвонимprintфункцияdatetimeСтрока отображения формата:

print(date_object)

вывод:

2018-09-15 00:00:00

Как видите, конвертация прошла успешно!

Вы можете видеть, что косая черта «/» используется для разделения элементов строки. это говоритstrptimeметод, в каком формате находится наша дата, в нашем случае в качестве разделителя используется «/».

Но что, если месяц/день/год разделены знаком «-»? Вы должны сделать это следующим образом:

from datetime import datetime

str = '9-15-18'
date_object = datetime.strptime(str, '%m-%d-%y')

print(date_object)

вывод:

2018-09-15 00:00:00

Опять же, благодаря спецификаторам формата,strptimeМетод может анализировать нашу дату и преобразовывать ее в объект даты.

В заключение

В этой статье мы рассмотрели, как форматировать даты в Python. Мы видим это в PythondatetimeКак модули работают со значениями даты и времени. Этот модуль содержит множество классов для управления временем и датой, например,timeкласс используется для представления значений времени, аdateКласс, используемый для представления значений даты календаря.

Если вы обнаружите ошибки в переводе или в других областях, требующих доработки, добро пожаловать наПрограмма перевода самородковВы также можете получить соответствующие бонусные баллы за доработку перевода и PR. начало статьиПостоянная ссылка на эту статьюЭто ссылка MarkDown этой статьи на GitHub.


Программа перевода самородковэто сообщество, которое переводит высококачественные технические статьи из Интернета сНаггетсДелитесь статьями на английском языке на . Охват контентаAndroid,iOS,внешний интерфейс,задняя часть,блокчейн,продукт,дизайн,искусственный интеллектЕсли вы хотите видеть более качественные переводы, пожалуйста, продолжайте обращать вниманиеПрограмма перевода самородков,официальный Вейбо,Знай колонку.