Python datetime
Содержание:
Как открыть HEIC
Clock ID Constants¶
These constants are used as parameters for and
.
-
Identical to , except it also includes any time that
the system is suspended.This allows applications to get a suspend-aware monotonic clock without
having to deal with the complications of , which may
have discontinuities if the time is changed using or
similar.: Linux 2.6.39 or later.
New in version 3.7.
-
The Solaris OS has a timer that attempts to use an optimal
hardware source, and may give close to nanosecond resolution.
is the nonadjustable, high-resolution clock.: Solaris.
New in version 3.3.
-
Clock that cannot be set and represents monotonic time since some unspecified
starting point.: Unix.
New in version 3.3.
-
Similar to , but provides access to a raw
hardware-based time that is not subject to NTP adjustments.: Linux 2.6.28 and newer, macOS 10.12 and newer.
New in version 3.3.
-
High-resolution per-process timer from the CPU.
: Unix.
New in version 3.3.
-
High-resolution per-process timer from the CPU.
: FreeBSD, NetBSD 7 or later, OpenBSD.
New in version 3.7.
-
The system must have a current leap second table in order for this to give
the correct answer. PTP or NTP software can maintain a leap second table.: Linux.
New in version 3.9.
-
Thread-specific CPU-time clock.
: Unix.
New in version 3.3.
-
Time whose absolute value is the time the system has been running and not
suspended, providing accurate uptime measurement, both absolute and
interval.: FreeBSD, OpenBSD 5.5 or later.
New in version 3.7.
-
Clock that increments monotonically, tracking the time since an arbitrary
point, unaffected by frequency or time adjustments and not incremented while
the system is asleep.: macOS 10.12 and newer.
New in version 3.8.
The following constant is the only parameter that can be sent to
.
Модуль datetime
Модуль содержит классы:
Также существует класс , который применяется для работы с часовыми поясами.
Класс datetime.date
Класс принимает три аргумента: год, месяц и день.
>>> import datetime >>> date = datetime.date(2017, 4, 2) >>> date.year 2017 >>> date.month 4 >>> date.day 2
Давайте посмотрим, какой сейчас день:
>>> today = datetime.date.today() >>> today.year 2018 >>> today.month 4 >>> today.day 21
Класс datetime.datetime
Класс принимает аргументы: год, месяц, день, час, минута, секунда и микросекунда.
>>> date_time = datetime.datetime(2017, 4, 21, 13, 30, 10) >>> date_time.year 2017 >>> date_time.month 4 >>> date_time.day 21 >>> date_time.hour 13 >>> date_time.minute 30 >>> date_time.second 10
Давайте посмотрим, какое сейчас время:
>>> today = datetime.datetime.today() >>> today datetime.datetime(2018, 4, 21, 12, 43, 27, 786725) >>> today.hour 12 >>> today.minute 43
>>> datetime.datetime.now() # местное время datetime.datetime(2018, 4, 24, 13, 2, 39, 17479) >>> datetime.datetime.utcnow() # время по Гринвичу datetime.datetime(2018, 4, 24, 10, 2, 47, 46330)
Получить из объекта отдельно дату и отдельно время:
>>> today = datetime.datetime.today() >>> today datetime.datetime(2018, 4, 21, 13, 26, 54, 387462) >>> today.date() # отдельно дата datetime.date(2018, 4, 21) >>> today.time() # отдельно время datetime.time(13, 26, 54, 387462)
Классы и содержат метод , который позволяет создавать строку, отображающую время в более понятной для человека форме.
>>> today = datetime.date.today().strftime("%d.%m.%Y") >>> today '21.04.2018'
>>> import locale >>> locale.setlocale(locale.LC_ALL, "ru") # задаем локаль для вывода даты на русском языке 'ru' >>> today = datetime.datetime.today().strftime("%A, %d.%m.%Y") >>> today 'суббота, 21.04.2018'
Сокращенное название дня недели | |
Полное название дня недели | |
Сокращенное название месяца | |
Полное название месяца | |
Дата и время | |
День месяца | |
24-часовой формат часа | |
12-часовой формат часа | |
День года. Цифровой формат | |
Номер месяца. Цифровой формат | |
Минута. Цифровой формат | |
До полудня или после (AM или PM) | |
Секунда. Цифровой формат | |
Номер недели в году. Цифровой формат (с воскресенья) | |
День недели. Цифровой формат | |
Номер недели в году. Цифровой формат (с понедельника) | |
Дата | |
Время | |
Год без века. Цифровой формат | |
Год с веком. Цифровой формат | |
Временная зона | |
Знак процента |
Методы класса :
- — объект из текущей даты и времени; работает также, как и со значением .
- — объект из текущей даты и времени, местное время.
- — объект из текущей даты и времени, по Гринвичу.
- — дата из стандартного представления времени.
- — дата из числа, представляющего собой количество дней, прошедших с 01.01.1970.
- — объект из комбинации объектов и .
- — преобразует строку в (так же, как и функция из модуля ).
- — преобразует объект в строку согласно формату.
- — объект даты (с отсечением времени).
- — объект времени (с отсечением даты).
- — возвращает новый объект с изменёнными атрибутами.
- — возвращает из .
- — количество дней, прошедших с 01.01.1970.
- — возвращает время в секундах с начала эпохи Unix.
- — день недели в виде числа, понедельник — 0, воскресенье — 6.
- — день недели в виде числа, понедельник — 1, воскресенье — 7.
- — кортеж (год в формате ISO, ISO номер недели, ISO день недели).
- — красивая строка вида или, если ,
- — возвращает строковое представление текущего местного времени.
Класс datetime.timedelta
Класс позволяет выполнять операции над датами — складывать, вычитать, сравнивать. Конструктор принимает именованные аргументы , , , , , , :
>>> delta = datetime.timedelta(days = 5, hours = 1, minutes = 1) >>> delta datetime.timedelta(5, 3660)
Интервал времени 5 дней, 1 час и 1 минута. Получить результат можно с помощью атрибутов , и (5 дней и 3660 секунд):
>>> delta.days 5 >>> delta.seconds 3660
Получить результат в секундах позволяет метод :
>>> today = datetime.datetime.today() # текущая дата >>> today datetime.datetime(2018, 4, 21, 15, 19, 2, 515432) >>> future = datetime.datetime(2019, 4, 21, 15, 19, 2, 515432) # дата на один год больше >>> delta = future - today >>> delta datetime.timedelta(365) >>> delta.total_seconds() # 365 дней в секундах 31536000.0
Прибавить к текущей дате 10 дней, 10 часов и 10 минут:
>>> today = datetime.datetime.today() >>> delta = datetime.timedelta(days = 10, hours = 10, minutes = 10) >>> future = today + delta >>> today # 21 апреля 2018 года, 15:29 datetime.datetime(2018, 4, 21, 15, 29, 29, 265954) >>> future # 2 мая 2018 года, 01:39 datetime.datetime(2018, 5, 2, 1, 39, 29, 265954)
Отрезок времени timedelta и операции с ним.
Синтаксис:
import datetime delta = datetime.timedelta(days=, seconds=, microseconds=, milliseconds=, minutes=, hours=, weeks=)
Параметры:
Все аргументы являются необязательными и по умолчанию равны 0. Аргументы могут быть целыми числами или числами с плавающей запятой и могут быть положительными или отрицательными.
- — день,
- — секунды,
- — микросекунды,
- — миллисекунды,
- — минуты,
- — часы,
- — недели.
Описание:
Класс модуля представляет собой продолжительность, разницу между двумя датами или временем.
Экземпляр продолжительность хранит как сочетание , и , а остальные переданные в конструктор аргументы конвертируются в эти единицы:
- преобразуется в 1000 .
- преобразуется в 60 .
- преобразуется в 3600 .
- преобразуется в 7 .
, и затем нормализуются так, чтобы представление было уникальным:
- 0 <= < 1000000
- 0 <= < 3600*24 (количество секунд в одном дне)
- -999999999 <= <= 999999999
В следующем примере показано, как любые аргументы, кроме , и объединяются и нормализуются в эти три результирующих атрибута:
>>> from datetime import timedelta >>> delta = timedelta( ... days=50, ... seconds=27, ... microseconds=10, ... milliseconds=29000, ... minutes=5, ... hours=8, ... weeks=2 ... ) # Остались только дни, секунды и микросекунды >>> delta # datetime.timedelta(days=64, seconds=29156, microseconds=10)
Если какой-либо аргумент представляет собой число и есть дробные микросекунды и микросекунды, оставшиеся от всех аргументов, то они объединяются, а их сумма округляется до ближайшей микросекунды с использованием прерывателя с округлением от половины до четности. Если аргумент не является , то процессы преобразования и нормализации являются точными, информация не теряется.
Если нормализованное значение дней находится за пределами диапазона , то появляется исключение .
Обратите внимание, что нормализация отрицательных значений может сначала удивить. Например:
>>> from datetime import timedelta >>> d = timedelta(microseconds=-1) >>> (d.days, d.seconds, d.microseconds) # (-1, 86399, 999999)
Продолжительность имеет 1 метод:
Метод возвращает общее количество секунд, содержащихся в продолжительности . Эквивалент `td / timedelta(seconds=1).
Для интервальных единиц, отличных от секунд, используйте форму деления напрямую, например .
Обратите внимание, что для очень больших временных интервалов более 270 лет на большинстве платформ этот метод теряет микросекундную точность
Операции с датами
Последнее обновление: 05.05.2017
Фоматирование дат и времени
Для форматирования объектов date и time в обоих этих классах предусмотрен метод strftime(format). Этот метод принимает только один
параметр, указывающий на формат, в который нужно преобразовать дату или время.
Для определения формата мы можем использовать один из следующих кодов форматирования:
-
%a: аббревиатура дня недели. Например, Wed — от слова Wednesday (по умолчанию используются английские наименования)
-
%A: день недели полностью, например, Wednesday
-
%b: аббревиатура названия месяца. Например, Oct (сокращение от October)
-
%B: название месяца полностью, например, October
-
%d: день месяца, дополненный нулем, например, 01
-
%m: номер месяца, дополненный нулем, например, 05
-
%y: год в виде 2-х чисел
-
%Y: год в виде 4-х чисел
-
%H: час в 24-х часовом формате, например, 13
-
%I: час в 12-ти часовом формате, например, 01
-
%M: минута
-
%S: секунда
-
%f: микросекунда
-
%p: указатель AM/PM
-
%c: дата и время, отформатированные под текущую локаль
-
%x: дата, отформатированная под текущую локаль
-
%X: время, форматированное под текущую локаль
Используем различные форматы:
from datetime import datetime now = datetime.now() print(now.strftime("%Y-%m-%d")) # 2017-05-03 print(now.strftime("%d/%m/%Y")) # 03/05/2017 print(now.strftime("%d/%m/%y")) # 03/05/17 print(now.strftime("%d %B %Y (%A)")) # 03 May 2017 (Wednesday) print(now.strftime("%d/%m/%y %I:%M")) # 03/05/17 01:36
При выводе названий месяцев и дней недели по умолчанию используются английские наименования. Если мы хотим использовать текущую локаль, но то мы
можем ее предварительно установить с помощью модуля locale:
from datetime import datetime import locale locale.setlocale(locale.LC_ALL, "") now = datetime.now() print(now.strftime("%d %B %Y (%A)")) # 03 Май 2017 (среда)
Сложение и вычитани дат и времени
Нередко при работе с датами возникает необходимость добавить к какой-либо дате определенный промежуток времени или, наоборот, вычесть некоторый период. И специально для
таких операций в модуле datetime определен класс timedelta. Фактически этот класс определяет некоторый период времени.
Для определения промежутка времени можно использовать конструктор timedelta:
timedelta( )
В конструктор мы последовательно передаем дни, секунды, микросекунды, миллисекунды, минуты, часы и недели.
Определим несколько периодов:
from datetime import timedelta three_hours = timedelta(hours=3) print(three_hours) # 3:00:00 three_hours_thirty_minutes = timedelta(hours=3, minutes=30) # 3:30:00 two_days = timedelta(2) # 2 days, 0:00:00 two_days_three_hours_thirty_minutes = timedelta(days=2, hours=3, minutes=30) # 2 days, 3:30:00
Используя timedelta, мы можем складывать или вычитать даты. Например, получим дату, которая будет через два дня:
from datetime import timedelta, datetime now = datetime.now() print(now) # 2017-05-03 17:46:44.558754 two_days = timedelta(2) in_two_days = now + two_days print(in_two_days) # 2017-05-05 17:46:44.558754
Или узнаем, сколько было времени 10 часов 15 минут назад, то есть фактически нам надо вычесть из текущего времени 10 часов и 15 минут:
from datetime import timedelta, datetime now = datetime.now() till_ten_hours_fifteen_minutes = now - timedelta(hours=10, minutes=15) print(till_ten_hours_fifteen_minutes)
Свойства timedelta
Класс timedelta имеет несколько свойств, с помощью которых мы можем получить временной промежуток:
-
days: возвращает количество дней
-
seconds: возвращает количество секунд
-
microseconds: возвращает количество микросекунд
Кроме того, метод total_seconds() возвращает общее количество секунд, куда входят и дни, и собственно секунды, и микросекунды.
Например, узнаем какой временной период между двумя датами:
from datetime import timedelta, datetime now = datetime.now() twenty_two_may = datetime(2017, 5, 22) period = twenty_two_may - now print("{} дней {} секунд {} микросекунд".format(period.days, period.seconds, period.microseconds)) # 18 дней 17537 секунд 72765 микросекунд print("Всего: {} секунд".format(period.total_seconds())) # Всего: 1572737.072765 секунд
Сравнение дат
Также как и строки и числа, даты можно сравнивать с помощью стандартных операторов сравнения:
from datetime import datetime now = datetime.now() deadline = datetime(2017, 5, 22) if now > deadline: print("Срок сдачи проекта прошел") elif now.day == deadline.day and now.month == deadline.month and now.year == deadline.year: print("Срок сдачи проекта сегодня") else: period = deadline - now print("Осталось {} дней".format(period.days))
НазадВперед
Python Tutorial
Python HOMEPython IntroPython Get StartedPython SyntaxPython CommentsPython Variables
Python Variables
Variable Names
Assign Multiple Values
Output Variables
Global Variables
Variable Exercises
Python Data TypesPython NumbersPython CastingPython Strings
Python Strings
Slicing Strings
Modify Strings
Concatenate Strings
Format Strings
Escape Characters
String Methods
String Exercises
Python BooleansPython OperatorsPython Lists
Python Lists
Access List Items
Change List Items
Add List Items
Remove List Items
Loop Lists
List Comprehension
Sort Lists
Copy Lists
Join Lists
List Methods
List Exercises
Python Tuples
Python Tuples
Access Tuples
Update Tuples
Unpack Tuples
Loop Tuples
Join Tuples
Tuple Methods
Tuple Exercises
Python Sets
Python Sets
Access Set Items
Add Set Items
Remove Set Items
Loop Sets
Join Sets
Set Methods
Set Exercises
Python Dictionaries
Python Dictionaries
Access Items
Change Items
Add Items
Remove Items
Loop Dictionaries
Copy Dictionaries
Nested Dictionaries
Dictionary Methods
Dictionary Exercise
Python If…ElsePython While LoopsPython For LoopsPython FunctionsPython LambdaPython ArraysPython Classes/ObjectsPython InheritancePython IteratorsPython ScopePython ModulesPython DatesPython MathPython JSONPython RegExPython PIPPython Try…ExceptPython User InputPython String Formatting
4.1. Модуль datetime¶
Основной функционал для работы с датами и временем сосредоточен в модуле datetime в виде следующих классов:
- date
- time
- datetime
4.1.1. Класс date
Для работы с датами воспользуемся классом date, который определен в модуле datetime. Для создания объекта date мы можем использовать конструктор date, который последовательно принимает три параметра: год, месяц и день:
date(year, month, day)
Например, создадим какую-либо дату:
import datetime yesterday = datetime.date(2017,5, 2) print(yesterday) # 2017-05-02
Если необходимо получить текущую дату, то можно воспользоваться методом today():
from datetime import date today = date.today() print(today) # 2017-05-03 print("{}.{}.{}".format(today.day, today.month, today.year)) # 2.5.2017
С помощью свойств day, month, year можно получить соответственно день, месяц и год.
4.1.2. Класс time
За работу с временем отвечает класс time. Используя его конструктор, можно создать объект времени:
time()
Конструктор последовательно принимает часы, минуты, секунды и микросекунды. Все параметры необязательные, и если мы какой-то параметр не передадим, то соответствующее значение будет инициализироваться нулем:
from datetime import time current_time = time() print(current_time) # 00:00:00 current_time = time(16, 25) print(current_time) # 16:25:00 current_time = time(16, 25, 45) print(current_time) # 16:25:45
4.1.3. Класс datetime
Класс datetime из одноименного модуля объединяет возможности работы с датой и временем. Для создания объекта datetime можно использовать следующий конструктор:
datetime(year, month, day )
Первые три параметра, представляющие год, месяц и день, являются обязательными. Остальные необязательные, и если мы не укажем для них значения, то по умолчанию они инициализируются нулем:
from datetime import datetime deadline = datetime(2017, 5, 10) print(deadline) # 2017-05-10 00:00:00 deadline = datetime(2017, 5, 10, 4, 30) print(deadline) # 2017-05-10 04:30:00
Для получения текущих даты и времени можно вызвать метод now():
from datetime import datetime now = datetime.now() print(now) # 2017-05-03 11:18:56.239443 print("{}.{}.{}{}{}".format(now.day, now.month, now.year, now.hour, now.minute)) # 3.5.2017 11:21 print(now.date()) print(now.time())
С помощью свойств day, month, year, hour, minute, second можно получить отдельные значения даты и времени. А через методы date() и time() можно получить отдельно дату и время соответственно.
Таблица форматов
Вы должны следовать приведенной ниже таблице форматов, чтобы использовать соответствующие директивы при указании параметра формата.
Директива | Значение | Пример вывода |
---|---|---|
%A | День недели как полное название локали. | Среда |
%a | День недели как сокращенное название локали. | Пн, вт, ср |
%w | День недели в виде десятичного числа, где 0 — воскресенье, а 6 — суббота. | 0,1,2,3,4… 6 |
%d | День месяца в виде десятичного числа с нулями. | 01,02,03… 31 |
% -d | День месяца в виде десятичного числа. (Зависит от платформы) | 1,2,3… |
% b | Месяц как сокращенное название языкового стандарта. | Море |
% B | Месяц как полное название локали. | марш |
% m | Месяц как десятичное число с нулями. | 01,02… 12 |
% -m | Месяц как десятичное число. (Зависит от платформы) | 1,2,… 12 |
%y | Год без века как десятичное число с нулями. | 20 (на 2020 год) |
% Y | Год со столетием в виде десятичного числа. | 2020, 2021 и др. |
%H | Час (в 24-часовом формате) как десятичное число с нулями. | 01, 02,… |
%-H | Час (24-часовой формат) в виде десятичного числа. (Зависит от платформы) | 1,2,3,… |
%I | Час (12-часовой формат) как десятичное число с нулями. | 01, 02, 03,… |
%-I | Час (12-часовой формат) в виде десятичного числа. (Зависит от платформы) | 1, 2, 3… |
%p | Локальный эквивалент AM или PM. | ДО ПОЛУДНЯ ПОСЛЕ ПОЛУДНЯ |
%M | Минута в виде десятичного числа с нулями. | 01, 02,… 59 |
% -M | Минута как десятичное число. (Зависит от платформы) | 1,2,3,… 59 |
% S | Второй — десятичное число с нулями. | 01, 02,… 59 |
% -S | Секунда как десятичное число. (Зависит от платформы) | 1, 2,… 59 |
% f | Микросекунда в виде десятичного числа с нулями слева. | 000000 |
%z | Смещение UTC в форме + ЧЧММ или -ЧЧММ (пустая строка, если объект наивен). | (пусто), +0000, -0400, +1030 |
%Z | Название часового пояса (пустая строка, если объект наивный). | (пусто), UTC, IST, CST |
% j | День года в виде десятичного числа с нулями. | 1, 2, 3,… 366 |
% -j | День года в виде десятичного числа. (Зависит от платформы) | 1, 2, 3,… 366 |
% U | Номер недели в году (воскресенье как первый день недели) в виде десятичного числа, дополненного нулями. Все дни нового года, предшествующие первому воскресенью, считаются нулевой неделей. | 1, 2, 3,… 53 |
%W | Номер недели в году (понедельник как первый день недели) в виде десятичного числа. Все дни нового года, предшествующие первому понедельнику, считаются нулевой неделей. | 1, 2, 3,… 53 |
% c | Соответствующее представление даты и времени для локали. | Ср 06 мая 12:23:56 2020 |
%x | Соответствующее представление даты языкового стандарта. | 06.05.20 |
%X | Соответствующее временное представление локали. | 12:23:56 |
%% | Буквальный символ «%». | % |
Format Code List
The table below shows all the format codes that you can use.
Directive | Meaning | Example |
Abbreviated weekday name. | Sun, Mon, … | |
Full weekday name. | Sunday, Monday, … | |
Weekday as a decimal number. | 0, 1, …, 6 | |
Day of the month as a zero-padded decimal. | 01, 02, …, 31 | |
Day of the month as a decimal number. | 1, 2, …, 30 | |
Abbreviated month name. | Jan, Feb, …, Dec | |
Full month name. | January, February, … | |
Month as a zero-padded decimal number. | 01, 02, …, 12 | |
Month as a decimal number. | 1, 2, …, 12 | |
Year without century as a zero-padded decimal number. | 00, 01, …, 99 | |
Year without century as a decimal number. | 0, 1, …, 99 | |
Year with century as a decimal number. | 2013, 2019 etc. | |
Hour (24-hour clock) as a zero-padded decimal number. | 00, 01, …, 23 | |
Hour (24-hour clock) as a decimal number. | 0, 1, …, 23 | |
Hour (12-hour clock) as a zero-padded decimal number. | 01, 02, …, 12 | |
Hour (12-hour clock) as a decimal number. | 1, 2, … 12 | |
Locale’s AM or PM. | AM, PM | |
Minute as a zero-padded decimal number. | 00, 01, …, 59 | |
Minute as a decimal number. | 0, 1, …, 59 | |
Second as a zero-padded decimal number. | 00, 01, …, 59 | |
Second as a decimal number. | 0, 1, …, 59 | |
Microsecond as a decimal number, zero-padded on the left. | 000000 — 999999 | |
UTC offset in the form +HHMM or -HHMM. | ||
Time zone name. | ||
Day of the year as a zero-padded decimal number. | 001, 002, …, 366 | |
Day of the year as a decimal number. | 1, 2, …, 366 | |
Week number of the year (Sunday as the first day of the week). All days in a new year preceding the first Sunday are considered to be in week 0. | 00, 01, …, 53 | |
Week number of the year (Monday as the first day of the week). All days in a new year preceding the first Monday are considered to be in week 0. | 00, 01, …, 53 | |
Locale’s appropriate date and time representation. | Mon Sep 30 07:06:05 2013 | |
Locale’s appropriate date representation. | 09/30/13 | |
Locale’s appropriate time representation. | 07:06:05 | |
A literal ‘%’ character. | % |
ValueError in strptime()
If the string (first argument) and the format code (second argument) passed to the doesn’t match, you will get . For example:
If you run this program, you will get an error.
ValueError: time data '12/11/2018' does not match format '%d %m %Y'
Recommended Readings: Python strftime()
Converting a Local Time Object to Seconds
You’ve already seen how to convert a UTC time object to seconds using . To convert local time to seconds, you’ll use .
requires you to pass a parameter called that takes the form of either a normal 9-tuple or a object representing local time:
>>>
It’s important to keep in mind that must be a tuple representing local time, not UTC:
>>>
Note: For this example, assume that the local time is .
This example shows why it’s important to use with local time, rather than UTC:
-
with no argument returns a using UTC. shows . This is accurate because , so UTC should be 6 hours ahead of local time.
-
tries to return the number of seconds, expecting local time, but you passed instead. So, instead of understanding that is UTC time, it assumes you meant .
-
is then used to convert those seconds back into UTC, which results in an inconsistency. The time is now . The reason for this discrepancy is the fact that expected local time. So, the conversion back to UTC adds another 6 hours to local time.
Measuring Performance
You can use to measure the performance of your program.
The way you do this is to use which, as the name suggests, provides a performance counter with a high resolution to measure short distances of time.
To use , you place a counter before your code begins execution as well as after your code’s execution completes:
>>>
First, captures the moment before you call the function. captures the moment after the function returns. The function’s total execution time took seconds.
Technical Detail: Python 3.7 introduced , which works the same as , but uses nanoseconds instead of seconds.
(or ) is the most precise way to measure the performance of your code using one execution. However, if you’re trying to accurately gauge the performance of a code snippet, I recommend using the Python module.
Форматирование и перевод в строку
Для получение части даты или времени можно использовать следующие атрибуты:
- year
- month
- day
- weekday
- hour
- minute
- second
Так же есть метод strftime, который форматирует даты в нужном формате в строку. Например так мы получим дату в формате, который используется у нас:
Где:
- %d — день месяца с 1 по 31;
- %m — месяц с 1 по 12;
- %Y — год;
- %H — час в формате 0-24;
- %M — минуты;
- %S — секунды.
Таким же способом можно получить время и дату:
- %c — время и дата;
- %x — дата;
- %X — время.
Обратите внимание, что таким способом мы преобразуем объект класса datetime в строку и мы больше не сможем использовать методы по работе с датой (например сравнение):
Мы получим ошибку так как уже работаем со строкой:
AttributeError: ‘str’ object has no attribute ‘day’
Выше описаны основные возможности форматирования используя метод strftime(), но их, конечно, больше.
Получения дня недели и название месяца
Можно получить название дня недели или название. Численный вариант эквивалентен следующим значениям:
- 0 — Monday (Понедельник);
- 1 — Tuesday (Вторник);
- 2 — Wednesday (Среда);
- 3 — Thursday (Четверг);
- 4 — Friday (Пятница);
- 5 — Saturday (Суббота);
- 6 — Sunday (Воскресенье).
Следующий пример вернет день недели в виде числа:
Или получить название:
Где:
- %A — полное название дня недели;
- %a — сокращенное название дня недели;
- %s — представление в виде числа.
Такой же принцип по работе с месяцами, где:
- %B — полное название месяца;
- %b — сокращенное название месяца;
- %m — месяц в виде числа.