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

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

Вступление

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

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

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

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

Модуль datetime

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

 import datetime 

Мы можем представить значения времени с помощью класса time Атрибуты для time включают час, минуту, секунду и микросекунду.

Аргументы для time необязательны. Хотя, если вы не укажете аргумент, вы вернетесь к времени 0, что вряд ли будет тем, что вам нужно большую часть времени.

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

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

Чтобы посмотреть время, воспользуемся функцией print

 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) 

Первый параметр - это строка формата, а второй параметр - время форматирования, что не является обязательным.

Этот метод также можно использовать 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 : возвращает первые три символа названия месяца. В нашем примере он вернул «сен».
  • %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 : возвращает смещение по всемирному координированному времени.
  • %j : возвращает номер дня в году от 001 до 366.
  • %W : возвращает номер недели в году от 00 до 53, при этом понедельник считается первым днем недели.
  • %U : возвращает номер недели в году от 00 до 53, при этом воскресенье считается первым днем каждой недели.
  • %c : возвращает местную версию даты и времени.
  • %x : возвращает локальную версию даты.
  • %X : возвращает локальную версию времени.

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

 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 - это директива, определяющая формат, который должен быть принят датой после преобразования.

Например, предположим, что нам нужно преобразовать строку «15.09.18» в объект datetime

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

 from datetime import datetime 

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

 str = '9/15/18' 

Python не сможет понять указанную выше строку как datetime, пока мы не преобразуем ее в фактический объект datetime Мы можем успешно сделать это, вызвав метод 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 метод strptime смог проанализировать нашу дату и преобразовать ее в объект даты.

Заключение

В этой статье мы изучили, как форматировать даты в Python. Мы увидели, как datetime в Python может использоваться для управления значениями даты и времени. Модуль содержит ряд классов, которые можно использовать для этой цели. Например, time используется для представления значений времени, а date - для представления значений календарной даты.

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus