Работа с датой python: Python время и дата — Работа с модулем datetime: разбор и форматирование
Python время и дата — Работа с модулем datetime: разбор и форматирование
Модуль datetime из стандартной библиотеки языка программирования Python представляет собой сборник из самых разных классов для комфортной работы со временем и датами. За счет множества встроенных методов, предназначенных для удобного отображения, а также манипуляции над временем и датами, повышается функциональность некоторых программ.
Применение
Библиотека datetime используется для работы в Python со временем и датами, позволяя представлять данную информацию в наиболее удобной форме.
Она состоит из нескольких классов. Благодаря их наличию, программист получает доступ к многим полезным методам:
- Получение текущих системных даты и времени;
- Вычисления разницы между датами и другие арифметические операции;
- Операциям, которые позволяют сравнивать время;
- Форматированный вывод информации о дате и времени.
В модуле используются константы MINYEAR и MAXYEAR, которые равны 1 и 9999 соответственно. Это минимальное и максимально возможное значение года, используемые в библиотеке.
Отличие datetime от time
Но в Python помимо библиотеки datetime есть еще библиотека time. Давайте разберемся, какую из них нам следует использовать:
Модуль time обычно используется при работе с текущем временем, основывающемся на значении в секундах, прошедших с начала эпохи. Позволяет делать его форматированный вывод. Есть возможности установки пауз в выполнении скрипта с помощью метода sleep. Используется для вычисления времени работы программы с помощью monotonic.
В отличие от модуля time, в datetime есть несколько встроенных классов, позволяющих производить различные манипуляции с датой и временем, такие как арифметические операции или сравнение.
То есть, если требуется производить арифметические операции со временем, то тогда используем datetime.
Классы библиотеки
Модуль datetime включает в себя несколько разных классов, каждый из которых обладает собственными методами и свойствами, а также служит для определенных целей. Все они представлены в следующей таблице, где содержатся их названия и краткая характеристика.
Название | Характеристика |
date | представляет собой дату, полностью исключая данные о времени, на основе Григорианского календаря |
time | включает данные о времени, полностью игнорируя сведения о дате |
datetime | содержит информацию о времени и дате, основываясь на данных из Григорианского календаря |
timedelta | описывает определенный период во времени, который находится между двумя различными моментами |
tzinfo | представляет различные сведения о часовом поясе |
timezone | описывает время, руководствуясь стандартом UTC |
Далее будет рассмотрено как с помощью этих классов можно в Python работать с датой и временем. Разберем основные примеры использования библиотеки datetime.
date
Класс date используется для представления данных о дате, которые включают год, месяц и число. Чтобы иметь возможность применять этот класс, необходимо предварительно импортировать модуль datetime, поместив соответствующую инструкцию в начало файла с программным кодом. Для создания объектов типа date следует произвести вызов одноименного конструктора, указав ему в качестве параметров сведения о дате. При этом нельзя забывать о порядке, в котором находятся аргументы: год, затем месяц и число.
Следующий пример демонстрирует создание объекта date, где переменная под названием a получает три обозначенных выше значения. После этого сведения о дате выводятся на экран при помощи метода print, а функция type позволяет получить имя класса для этого объекта.
import datetime a = datetime.date(2001, 10, 28) print(a) print(type(a)) 2001-10-28 <class 'datetime.date'>
Если необходимо в Python получить информацию о текущей дате, совсем необязательно вызывать стандартный конструктор date и вручную вбивать подходящие значения. С этой задачей как нельзя лучше справляется встроенный метод today. В следующем фрагменте кода показано как можно быстро присвоить сегодняшнюю дату объекту, а затем вывести эту информацию.
import datetime a = datetime.date.today() print(a) 2018-11-08
Иногда приходится работать не только с общими сведениями о дате, но и с отдельными ее составляющими, годом, месяцем или днем. Получить доступ к данным свойствам объекта можно с помощью оператора точки. Однако следует помнить, что изменить их у текущего объекта нельзя. В следующем примере показывается как переменная a инициализируется с помощью конструктора, после чего на экране отображаются все ее свойства по-отдельности.
import datetime a = datetime.date(2012, 7, 21) print(a.year) print(a.month) print(a.day) 2012 7 21
time
Класс time служит для демонстрации данных о времени, полностью игнорируя дату. Как и в случае с предыдущим классом date, следует импортировать модуль datetime с помощью ключевого слова import. Создать объект, принадлежащий к типу time можно с помощью конструктора, который принимает такие аргументы как количество часов, минут, секунд и микросекунд. Указывая данные параметры, не стоит забывать об их необходимом порядке, расставляя числа на правильных позициях. Также нужно помнить, что существуют ограничения, к примеру, нельзя отображать время со значением более 59 на месте секунд.
В следующем фрагменте кода создается переменная a, которой присваивается объект типа time с четырьмя разными свойствами: число часов, минут, секунд и микросекунд. Благодаря методу print выводится информация об этом объекте, а функция type отображает его класс.
import datetime a = datetime.time(12, 18, 35, 5867) print(a) print(type(a)) 12:18:35.005867 <class 'datetime.time'>
Чтобы создать объект типа time необязательно указывать все его свойства в конструкторе. Как видно из результатов выполнения описанной ниже программы, недостающие данные о времени автоматически заполняются нулями, в то время как введенные числа добавляются в объект от большего к меньшему. Таком образом, инициализируются три разных переменных a, b и c, после чего методы print выводят информацию об их текущем состоянии на дисплей.
import datetime a = datetime.time(23, 5, 30) b = datetime.time(7, 26) c = datetime.time(21) print(a) print(b) print(c) 23:05:30 07:26:00 21:00:00
Также, как и в классе date, пользуясь time, можно получать доступ к отдельным значениям созданного ранее объекта: часам, минутам, секундам и микросекундам. Для этого нужно применить оператор точка, после чего указать конкретное свойство. В следующем примере демонстрируется вывод информации, представляющей отдельные сведения об объекте a.
import datetime a = datetime.time(16, 3, 49, 23578) print(a.hour) print(a.minute) print(a.second) print(a.microsecond) 16 3 49 23578
datetime
Класс datetime позволяет описывать данные об определенном моменте во времени, который учитывает не только часы и минуты, но и сведения о дате. Как и в случае с предыдущими типами объектов, здесь используется конструктор с несколькими аргументами под каждое значение. В следующем примере демонстрируется программа, где переменная под именем a получает объект из стандартного конструктора datetime, после выводит свое значение и тип.
import datetime c = datetime.datetime(2017, 7, 18, 4, 52, 33, 51204) print(c) print(type(c)) 2017-07-18 04:52:33.051204 <class 'datetime.datetime'>
Создавать объекты можно с разным набором параметров, указывая только нужные сведения. Отсутствующие данные по умолчанию будут заполнены нулями. Приведенный ниже код показывает, как создаются два объекта a и b, первый из которых изначально содержит только дату, а второй обладает информацией о дате и о времени.
import datetime a = datetime.datetime(2007, 2, 13) b = datetime.datetime(2013, 10, 25, 12, 8, 47) print(a) print(b) 2007-02-13 00:00:00 2013-10-25 12:08:47
Получить текущий момент времени можно при помощи двух разных методов, один из которых уже использовался ранее в date. Следующий код демонстрирует вызов функций today и now, возвращающих в Python текущую дату и время с точностью до микросекунд. Метод print как обычно позволяет отобразить эти сведения на дисплее.
import datetime a = datetime.datetime.today() b = datetime.datetime.now() print(a) print(b) 2018-11-08 11:12:53.256261 2018-11-08 11:12:53.256270
Существует определенный формат, в котором дата и время выводятся по умолчанию, но данное представление не всегда удовлетворяет запросы пользователя.
Чтобы в Python преобразовать дату и время в строку нужного формата, следует воспользоваться методом strftime, указав ему в качестве аргумента параметры форматирования. Как можно понять из примера, который находится ниже, за воспроизведение информации о количестве дней или минут отвечают специальные зарезервированные символы, идущие следом за знаком процента.
Стоит заметить, что здесь создаются два совершенно идентичных объекта при помощи метода today. Однако, благодаря работе функции strftime, каждый из них получает свою форму для вывода на экран (день, месяц и год для переменной a, час, минута, секунда для переменной b). После этого метод print отображает сведения в заданном ранее формате.
import datetime a = datetime.datetime.today().strftime("%d.%m.%Y") b = datetime.datetime.today().strftime("%H:%M:%S") print(a) print(b) 08.11.2018 11:41:04
Доступные типы форматов для вывода через консоль располагаются в следующей таблице. Здесь можно найти их обозначения, а также краткое описание того, что именно они делают.
Формат | Значение |
%a | название дня недели в сокращенном виде |
%A | название дня недели в полном виде |
%w | номер дня недели в виде целого числа |
%d | номер дня месяца в виде целого числа |
%b | название месяца в сокращенном виде |
%B | название месяца в полном виде |
%m | номер месяца в числовом представлении |
%y | номер года без столетия |
%Y | номер года в полном представлении |
%H | количество часов в 24-часовом формате |
%I | количество часов в 12-часовом формате |
%p | до полудня или после полудня в 12-часовом формате |
%M | количество минут в виде целого числа |
%S | количество секунд в виде целого числа |
%f | количество микросекунд в виде целого числа |
%z | часовой пояс в формате UTC |
%Z | название часового пояса |
%j | номер дня в году |
%U | номер недели в году, если считать с воскресенья |
%w | номер недели в году, если считать с понедельника |
%c | местное представление даты и времени |
%x | местное представление даты |
%X | местное представление времени |
%% | символ процента |
Как и в случае с time и date, в классе datetime пользователь в состоянии получать доступ к отдельным свойствам созданного объекта (годам, месяцам, дням, часам, минутам, секундам и микросекундам. В следующем примере кода демонстрируется вывод данных значений.
import datetime a = datetime.datetime(2015, 3, 27, 8, 12, 24, 34574) print(a.year) print(a.month) print(a.day) print(a.hour) print(a.minute) print(a.second) print(a.microsecond) 2015 3 27 8 12 24 34574
Сформировать новый объект типа datetime можно и с помощью двух разных объектов, представляющих время и дату (time и date). Для этого используется функция combine. В следующем примере показывается как переменные a и b получают некоторые значения, после чего передаются методу combine в качестве двух параметров.
from datetime import datetime, date, time a = date(2015, 3, 19) b = time(2, 10, 43) c = datetime.combine(a, b) print(c) 2015-03-19 02:10:43
Операции
Пользуясь классом datetime, можно легко находить разницу между двумя разными датами. Следующим пример демонстрирует создание двух объектов. Переменная a представляет собой дату, которую передает ей метод now, а b задается при помощи конструктора вручную. Выполнив простую операцию нахождения разницы между объектами a и b, можно получить третий объект c. Применение функции print позволяет напрямую вывести на экран его свойства за счет оператора точки.
from datetime import datetime a = datetime.now() b = datetime(2015, 3, 21) c = a - b print(c.days) print(c.seconds) print(c.microseconds) 1328 43219 65190
Перечень доступных операций, с которыми можно работать, располагается в следующей таблице. Здесь находятся примеры операций и их назначение.
Операция | Значение |
a + b | суммирует значения дат a и b |
a – b | находит разницу между датами a и b |
a * i | умножает численное представление свойств даты a на некую константу i |
a // i | делит численное представление свойств даты a на некую константу i, остаток отбрасывается |
+a | возвращает объект timedelta с полностью идентичным значением a |
–a | возвращает объект timedelta с полностью противоположным значением a |
a > b | возвращает true, если a больше b |
a < b | возвращает true, если a меньше b |
abs(a) | возвращает объект timedelta с положительным значением всех свойств a |
str(a) | возвращает строковое представление объекта a в формате, заданном по умолчанию |
repr(a) | возвращает строковое представление объекта a в формате с отрицательными значениями |
timedelta
Класс timedelta предназначен для удобного выполнения различных манипуляций над датами и временем. Можно создать объект данного класса, воспользовавшись конструктором. Аргументами являются дни, часы, минуты, секунды, микросекунды и недели, задать которые можно с помощью прямого обращения к именам свойств, как это показано в следующем примере. Как и раньше, метод print позволяет выводить сведения о дате на экран, а функция type отображает тип созданного объекта.
from datetime import timedelta a = timedelta(days=5, hours=21, minutes=2, seconds=37) print(a) print(type(a)) 5 days, 21:02:37 <class 'datetime.timedelta'>
Также можно прибавлять разные даты, формируя тем самым новый объект. В следующем примере показано, как получить сумму двух разных дат, воспользовавшись арифметической операцией для переменных a и b. Результат данного действия присваивается объекту под названием c, после чего выводится на экран в обычном формате при помощи метода print.
from datetime import datetime, timedelta a = datetime(2006, 12, 5) b = timedelta(hours=2, minutes=5, seconds=17) print(a) c = a + b print(c) 2006-12-05 00:00:00 2006-12-05 02:05:17
tzinfo и timezone
Классы tzinfo и timezone применяются для работы с информацией, которая содержит сведения о часовых поясах. Создать объект, принадлежащий типу tzinfo невозможно, поскольку этот класс является абстрактным. Однако можно воспользоваться наследованием, создав собственный класс на основе tzinfo. При этом следует помнить, что для работы с такими объектами придется реализовать несколько абстрактных методов, к числу которых относятся utcoffset (смещение по местному времени с UTC), dst (настройка перехода на летнее время), а также функция tzname (имя часового пояса в виде строки).
from datetime import tzinfo, timedelta, datetime, timezone class UTC0530(tzinfo): def __init__(self, offset=19800, name=None): self.offset = timedelta(seconds=offset) self.name = name or self.__class__.__name__ def utcoffset(self, dt): return self.offset def tzname(self, dt): return self.name def dst(self, dt): return timedelta(0) a = datetime.now(timezone.utc) print(a) b = datetime.now(UTC0530()) print(b) print(b.utcoffset()) print(b.tzname()) print(b.dst()) 2018-11-09 11:00:11.889875+00:00 2018-11-09 16:30:11.890014+05:30 5:30:00 UTC0530 0:00:00
В приведенной программе демонстрируется создание пользовательского класса UTC0530, в котором описаны методы utcoffset, dst и tzname, а также применение нового типа с двумя объектами a и b. Таким образом, получается отображение времени со смещением +5:30.
Заключение
Таким образом, пользуясь классами из библиотеки datetime, можно повысить эффективность работы программ, которые взаимодействуют со временем и датой. Возможности встроенных методов позволяют не только отображать нужные сведения в удобном формате, но также по-разному манипулировать ими, например, добавляя либо отнимая часы, минуты и секунды.
Использование дат в python, встроенный модуль datatime~ PythonRu
Предыдущий урок: Модули Python
Дата в Python не является типом данных, но мы можем импортировать модуль с именем datetime
для работы с датами в качестве объектов даты.
Импортируем модуль даты и времени и покажем текущую дату:
import datetime
x = datetime.datetime.now()
print(x)
Вывод:
2018-12-23 16:04:39.093712
Вывод даты
Дата содержит год, месяц, день, час, минуту, секунду и микросекунду.
У модуля datetime
есть много методов для возврата информации об объекте даты.
Вот несколько примеров, о которых вы узнаете позже в этом уроке
Выведем год и день недели:
import datetime
x = datetime.datetime.now()
print(x.year)
print(x.strftime("%A"))
Вывод:
2018
Sunday
Создание объектов даты
Чтобы создать дату, мы можем использовать класс datetime()
— (конструктор) модуля datetime
.
Для класса datetime()
требуется три параметра: год, месяц, день.
import datetime
x = datetime.datetime(2020, 5, 17)
print(x)
Вывод:
2020-05-17 00:00:00
Подписывайтесь на телеграм каналы
Класс datetime ()
также принимает параметры для часовой и временной зоны (час, минута, секунда, микросекунда, часовой пояс), но они являются необязательными и имеют стандартное значение 0
(None
для часового пояса).
Метод strftime()
Объект datetime
имеет метод форматирования объектов даты в читаемые строки.
Подробнее о работе со строками в python: Строки в python 3: методы, функции, форматирование
Метод называется strftime()
и принимает один параметр format
, чтобы указать формат возвращаемой строки.
Отобразим название месяца:
import datetime
x = datetime.datetime(2018, 6, 1)
print(x.strftime("%B"))
Вывод:
June
Таблица способов форматирования даты:
Символ | Описание | Пример |
---|---|---|
%a | День недели, короткий вариант | Wed |
%A | Будний день, полный вариант | Wednesday |
%w | День недели числом 0-6, 0 — воскресенье | 3 |
%d | День месяца 01-31 | 31 |
%b | Название месяца, короткий вариант | Dec |
%B | Название месяца, полное название | December |
%m | Месяц числом 01-12 | 12 |
%y | Год, короткий вариант, без века | 18 |
%Y | Год, полный вариант | 2018 |
%H | Час 00-23 | 17 |
%I | Час 00-12 | 05 |
%p | AM/PM | PM |
%M | Минута 00-59 | 41 |
%S | Секунда 00-59 | 08 |
%f | Микросекунда 000000-999999 | 548513 |
%z | Разница UTC | +0100 |
%Z | Часовой пояс | CST |
%j | День в году 001-366 | 365 |
%U | Неделя числом в году, Воскресенье первый день недели, 00-53 | 52 |
%W | Неделя числом в году, Понедельник первый день недели, 00-53 | 52 |
%c | Локальная версия даты и времени | Mon Dec 31 17:41:00 2018 |
%x | Локальная версия даты | 12/31/18 |
%X | Локальная версия времени | 17:41:00 |
%% | Символ “%” | % |
Далее: Модуль JSON
Работа с датами и временем
Модуль datetime
Последнее обновление: 05.05.2017
Основной функционал для работы с датами и временем сосредоточен в модуле datetime в виде следующих классов:
Класс 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 можно получить соответственно день, месяц и год
Класс time
За работу с временем отвечает класс time. Используя его конструктор, можно создать объект времени:
time([hour] [, min] [, sec] [, microsec])
Конструктор последовательно принимает часы, минуты, секунды и микросекунды. Все параметры необязательные, и если мы какой-то параметр не передадим, то
соответствующее значение будет инициализироваться нулем.
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
Класс datetime
Класс datetime из одноименного модуля объединяет возможности работы с датой и временем. Для создания объекта datetime
можно использовать следующий конструктор:
datetime(year, month, day [, hour] [, min] [, sec] [, microsec])
Первые три параметра, представляющие год, месяц и день, являются обязательными. Остальные необязательные, и если мы не укажем для них значения, то по умолчанию они инициализируются нулем.
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()
можно получить отдельно дату и время соответственно.
Преобразование из строки в дату
Из функциональности класса datetime следует отметить метод strptime(), который позволяет распарсить строку и преобразовать ее в дату. Этот метод принимает два параметра:
strptime(str, format)
Первый параметр str представляет строковое определение даты и времени, а второй параметр — формат, который определяет, как различные части даты и времени
расположены в этой строке.
Для определения формата мы можем использовать следующие коды:
%d: день месяца в виде числа
%m: порядковый номер месяца
%y: год в виде 2-х чисел
%Y: год в виде 4-х чисел
%H: час в 24-х часовом формате
%M: минута
%S: секунда
Применим различные форматы:
from datetime import datetime deadline = datetime.strptime("22/05/2017", "%d/%m/%Y") print(deadline) # 2017-05-22 00:00:00 deadline = datetime.strptime("22/05/2017 12:30", "%d/%m/%Y %H:%M") print(deadline) # 2017-05-22 12:30:00 deadline = datetime.strptime("05-22-2017 12:30", "%m-%d-%Y %H:%M") print(deadline) # 2017-05-22 12:30:00
использование классов datetime, примеры кода
От автора: классы date, time и datetime предоставляют ряд функций для работы в Python с датами, временем и временными интервалами. Date и datetime являются объектами Python, поэтому, когда вы манипулируете ими, вы фактически манипулируете объектами, а не строками или временными метками. Всякий раз, когда вы манипулируете датами или временем, вам нужно импортировать функцию datetime.
Классы datetime в Python подразделяются на 5 основных классов.
date — работа с простой датой (месяц, день, год)
time — время, независимое от дня (час, минута, секунда, микросекунда)
datetime — комбинация времени и даты (месяц, день, год, час, секунда, микросекунда)
Бесплатный курс «Python. Быстрый старт»
Получите курс и узнайте, как создать программу для перевода текстов на Python
Получить курс
timedelta — продолжительность времени, используемого для манипулирования датами
tzinfo— абстрактный класс для работы с часовыми поясами
В этом руководстве мы рассмотрим:
Как использовать классы Date и DateTime
Вывод даты с использованием date.today()
Текущая дата и время в Python: now() today()
Как отформатировать дату и время с помощью Strftime()
Как использовать Объекты Timedelta
Как использовать классы Date и DateTime
Шаг 1) Прежде чем запускать код для datetime, важно импортировать модули date time, как показано на скриншоте ниже.
Эти операторы импорта являются предопределенными частями функционала в библиотеке Python, которые позволяют вам манипулировать датами и временем без написания какого-либо кода. Рассмотрим следующее перед выполнением кода даты и времени:
from datetime import date
from datetime import date |
Эта строка сообщает интерпретатору Python, что из модуля datetime импортируется класс date. Мы не пишем код для этого функционала, а просто импортируем его для использования.
Шаг 2) Далее мы создаем экземпляр объекта даты.
Шаг 3) Далее мы выводим дату и запускаем код.
Вывод соответствует ожидаемому.
Вывод даты с использованием date.today()
Функция date.today имеет несколько свойств, связанных с ней. Мы можем вывести отдельно день / месяц / год и многое другое. Давайте рассмотрим пример:
Сегодняшний номер дня недели
Функция date.today() также дает номер дня недели. Вот таблица рабочих дней, которая начинается с понедельника 0 и заканчивается воскресеньем 6.
понедельник = 0
вторник = 1
среда = 2
четверг = 3
пятница = 4
суббота = 5
воскресенье = 6
Номер дня недели полезен для массивов, индекс которых зависит от дня недели.
Текущая дата и время в Python: now() today()
Шаг 1) Как и объекты Date, мы также можем использовать в Python объекты «DATETIME» . Он выдает дату вместе со временем в часах, минутах, секундах и миллисекундах.
Когда мы выполняем код для datetime, он выдает выходные данные с текущей датой и временем.
Шаг 2) С помощью «объекта DATETIME» вы также можете вызвать класс time.
Предположим, мы хотим вывести только текущее время без даты.
t = datetime.time(datetime.now())
t = datetime.time(datetime.now()) |
Мы импортировали класс time. Мы присваиваем ему текущее значение времени, используя datetime.now(). Мы присваиваем значение текущего времени переменной t. И это даст нам только время. Итак, давайте запустим эту программу.
Вы можете видеть, что здесь у меня есть дата и время. А в следующей строке есть только время.
Шаг 3) Мы применим индексатор дня недели к массиву дней недели, чтобы узнать, какой сегодня день.
Оператору дней (wd) присваивается номер (0-6) в зависимости от текущего дня недели. Здесь мы объявили массив списка для дней (Mon, Tue, Wed…Sun). Используйте это значение индекса, чтобы узнать, какой сегодня день. В нашем случае это номер 2, и он представляет среду, поэтому на выходе мы получим «Which is a Wednesday».
Вот полный код для получения текущей даты и времени, используя datetime.
from datetime import date
from datetime import time
from datetime import datetime
def main():
##Объект DATETIME
#получаем сегодняшнюю дату из класса datetime
today=datetime.now()
#выводим (today)
# Получаем текущее время
#t = datetime.time(datetime.now())
#выводим «The current time is», t
#день недели от 0 (понедельник) до 6 (воскресенье)
wd=date.weekday(today)
#Дни начинаются с 0 для понедельника
days= [«monday»,»tuesday»,»wednesday»,»thursday»,»friday»,»saturday»,»sunday»]
print(«Today is day number %d» % wd)
print(«which is a » + days[wd])
if __name__== «__main__»:
main()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | from datetime import date from datetime import time from datetime import datetime def main(): ##Объект DATETIME #получаем сегодняшнюю дату из класса datetime today=datetime.now() #выводим (today) # Получаем текущее время #t = datetime.time(datetime.now()) #выводим «The current time is», t #день недели от 0 (понедельник) до 6 (воскресенье) wd=date.weekday(today) #Дни начинаются с 0 для понедельника days= [«monday»,»tuesday»,»wednesday»,»thursday»,»friday»,»saturday»,»sunday»] print(«Today is day number %d» % wd) print(«which is a » + days[wd])
if __name__== «__main__»: main() |
Как отформатировать дату и время с помощью Strftime()
На данный момент мы узнали, как использовать в Python объекты datetime и date. Теперь мы узнаем, как использовать функцию форматирования времени и даты.
Шаг 1) Сначала мы рассмотрим, как отформатировать год. Вот пример:
Мы использовали для форматирования «функцию strftime».
Эта функция использует другой управляющий код для вывода.
Каждый управляющий код указывает различные параметры, такие как год, месяц, день недели и дата [(%y/%Y – Year), (%a/%A- weekday), (%b/%B- month), (%d — day of month)].
В нашем случае это («%Y»), который указывает год, он выводим полный год с веком (например, 2018).
Шаг 2) Теперь, если вы замените («%Y») на строчные буквы, т. е. («%y») и выполните код, выходные данные будут отображать только (18), а не (2018). Век года не будет отображаться как показано на скриншоте ниже.
Бесплатный курс «Python. Быстрый старт»
Получите курс и узнайте, как создать программу для перевода текстов на Python
Получить курс
Шаг 3) Функция Strf может объявлять отдельно дату, день, месяц и год. Также с небольшими изменениями в управляющем коде функции strftime вы можете отформатировать стиль текста.
Внутри функции strftime, если вы замените (%a) на заглавную A, т. е. (%A), вывод будет «Friday», а не просто «Fri».
Шаг 4) С помощью функции «Strftime» мы также можем получить локальное системное время, дату или и то, и другое.
%C — указывает местную дату и время
%x — указывает местную дату
%X — указывает местное время
В результате вы можете увидеть вывод, как и ожидалось.
Шаг 5) Функция strftime позволяет вам вызывать время в формате 24 часа или 12 часов.
Просто определив управляющий код, %I/H для часов, %M для минут, %S для секунд, можно вызвать время в разных форматах.
Время 12 часов объявляется, как [print now.strftime(«%I:%M:%S %P)].
24 часа объявляется, как [print now.strftime(«%H:%M»)].
Вот полный код для преобразования datetime в объект String.
#
#Пример файла для форматирования вывода даты и времени
#
from datetime import datetime
def main():
#Время и дата могут быть отформатированы с помощью набора предустановленных строк
#Управляющие коды
now= datetime.now() #получаем текущие дату и время
#%c — локальные время и дата, %x-локальная дата, %X- локальное время
print(now.strftime(«%c»))
print(now.strftime(«%x»))
print(now.strftime(«%X»))
##### Форматирование времени ####
#%I/%H — 12/24 часы, %M — минуты, %S — секунды, %p — локальное время AM/PM
print(now.strftime(«%I:%M:%S %p»)) # 12-часов:минуты:секунды:AM
print(now.strftime(«%H:%M»)) # 24-часов:минуты
if __name__== «__main__»:
main()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | # #Пример файла для форматирования вывода даты и времени # from datetime import datetime def main(): #Время и дата могут быть отформатированы с помощью набора предустановленных строк #Управляющие коды now= datetime.now() #получаем текущие дату и время #%c — локальные время и дата, %x-локальная дата, %X- локальное время print(now.strftime(«%c»)) print(now.strftime(«%x»)) print(now.strftime(«%X»)) ##### Форматирование времени #### #%I/%H — 12/24 часы, %M — минуты, %S — секунды, %p — локальное время AM/PM print(now.strftime(«%I:%M:%S %p»)) # 12-часов:минуты:секунды:AM print(now.strftime(«%H:%M»)) # 24-часов:минуты
if __name__== «__main__»: main() |
Как использовать Объекты Timedelta
С объектами timedelta вы можете оценить время как для будущего, так и для прошлого. Другими словами, это временной интервал для прогнозирования любого конкретного дня, даты или времени.
Помните, что эта функция предназначена не для вывода времени или даты, а для того, чтобы ВЫПОЛНЯТЬ РАСЧЕТЫ в будущем или прошлом. Давайте рассмотрим пример.
Шаг 1) Чтобы запустить Объект Timedelta, вам нужно сначала объявить оператор импорта, а затем выполнить код:
Указываем оператор импорта для timedelta
Теперь указываем код для вывода объекта из timedelta, как показано на снимке экрана
Запустите код. Timedelta представляет промежуток 365 дней, 8 часов и 15 минут и выводит то же самое
Смешение? Об этом в следующем шаге.
Шаг 2) Давайте получим текущие дату и время, чтобы проверить, как работает наш оператор импорта. Когда код выполняется, он выводим сегодняшнюю дату, что означает, что наш оператор импорта работает хорошо.
Шаг 3) Посмотрим, как мы можем получить дату через год с помощью Объекта Timedelta. Когда мы запускаем код, он выдает результат, как и ожидалось.
Шаг 4) Еще один пример того, как Timedelta может использоваться для расчета будущей даты из текущей даты и времени.
Шаг 5) Давайте рассмотрим более сложный пример. Я хотел бы определить, сколько дней прошло в новом году. Вот как мы будем действовать.
Используя today = date.today() мы получим сегодняшнюю дату
Мы знаем, что новый год всегда 1 января, но год может быть другим. Используя nyd=date(today.year, 1,1) мы сохраняем новый год в переменной nyd
if nyd
((today-nyd).days) показывает разницу между текущей датой и новым годом в ДНЯХ
Вывод — «New Year Day already went by 11 days ago».
Вот полный рабочий код:
#
# Пример файла для работы с объектом timedelta
#
from datetime import date
from datetime import time
from datetime import datetime
from datetime import timedelta
# составляем базовый timedelta и выводим его
print (timedelta(days=365, hours=8, minutes=15))
# выводим сегодняшнюю дату
print («today is: » + str(datetime.now()))
# выводим дату в одном годе от сегодняшней
print («one year from now it will be:» + str(datetime.now() + timedelta(days=365)))
# создаем timedelta, который использует более, чем один аргумент
# выводим (in one week and 4 days it will be » + str(datetime.now() + timedelta(weeks=1, days=4)))
# Сколько дней прошло с Нового Года?
today = date.today() # получаем текущую дату
nyd = date(today.year, 1, 1) # получаем день Нового года для того же года
# используем сравнение дат, чтобы определить, был ли уже в этом году Новый Год
# если да, используем функцию replace(), чтобы получить дату в следующем году
if nyd < today:
print («New Year day is already went by %d days ago» % ((today — nyd).days))
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | # # Пример файла для работы с объектом timedelta # from datetime import date from datetime import time from datetime import datetime from datetime import timedelta
# составляем базовый timedelta и выводим его print (timedelta(days=365, hours=8, minutes=15)) # выводим сегодняшнюю дату print («today is: » + str(datetime.now())) # выводим дату в одном годе от сегодняшней print («one year from now it will be:» + str(datetime.now() + timedelta(days=365))) # создаем timedelta, который использует более, чем один аргумент # выводим (in one week and 4 days it will be » + str(datetime.now() + timedelta(weeks=1, days=4))) # Сколько дней прошло с Нового Года? today = date.today() # получаем текущую дату nyd = date(today.year, 1, 1) # получаем день Нового года для того же года # используем сравнение дат, чтобы определить, был ли уже в этом году Новый Год # если да, используем функцию replace(), чтобы получить дату в следующем году if nyd < today: print («New Year day is already went by %d days ago» % ((today — nyd).days)) |
Пример Python 2
from datetime import date
from datetime import time
from datetime import datetime
def main():
##Объект DATETIME
#получаем сегодняшнюю дату из класса datetime
today=datetime.now()
#выводим сегодняшнюю дату
# Получаем текущее время
#t = datetime.time(datetime.now())
#выводим «The current time is», t
#weekday выводит от 0 (monday) до 6 (sunday)
wd = date.weekday(today)
#Дни начинаются с нуля для понедельника
days= [«monday»,»tuesday»,»wednesday»,»thursday»,»friday»,»saturday»,»sunday»]
print «Today is day number %d» % wd
print «which is a » + days[wd]
if __name__== «__main__»:
main()
#
#Пример файла для форматирования вывода даты и времени
#
from datetime import datetime
def main():
#Время и дата могут быть отформатированы с помощью набора предустановленных строк
#Управляющий код
now= datetime.now() #получаем текущие время и дату
#%c — локальные время и дата, %x-локальная дата, %X- локальное время
print now.strftime(«%c»)
print now.strftime(«%x»)
print now.strftime(«%X»)
##### Форматирование времени ####
#%I/%H — 12/24 часы, %M — минуты, %S — секунды, %p — локальное время AM/PM
print now.strftime(«%I:%M:%S %p») # 12-часов:минуты:секунды:AM
print now.strftime(«%H:%M») # 24-часа:минуты
if __name__== «__main__»:
main()
#
# Пример файла для работы с объектом timedelta
#
from datetime import date
from datetime import time
from datetime import datetime
from datetime import timedelta
# составляем базовый timedelta и выводим его print timedelta(days=365, hours=8, minutes=15)
# выводим сегодняшнюю дату
print «today is: » + str(datetime.now())
# выводим дату в одном годе от сегодняшней
print «one year from now it will be:» + str(datetime.now() + timedelta(days=365))
# создаем timedelta, который использует более, чем один аргумент
# выводим «in one week and 4 days it will be » + str(datetime.now() + timedelta(weeks=1, days=4))
# Сколько дней прошло с Нового Года?
today = date.today() # получаем текущую дату
nyd = date(today.year, 1, 1) # получаем день Нового года для того же года
# используем сравнение дат, чтобы определить, был ли уже в этом году праздник Нового Года
# если да, используем функцию replace(), чтобы получить дату в следующем году
if nyd < today:
print «New Year day is already went by %d days ago» % ((today — nyd).days)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | from datetime import date from datetime import time from datetime import datetime def main(): ##Объект DATETIME #получаем сегодняшнюю дату из класса datetime today=datetime.now() #выводим сегодняшнюю дату # Получаем текущее время #t = datetime.time(datetime.now()) #выводим «The current time is», t #weekday выводит от 0 (monday) до 6 (sunday) wd = date.weekday(today) #Дни начинаются с нуля для понедельника days= [«monday»,»tuesday»,»wednesday»,»thursday»,»friday»,»saturday»,»sunday»] print «Today is day number %d» % wd print «which is a » + days[wd]
if __name__== «__main__»: main() # #Пример файла для форматирования вывода даты и времени # from datetime import datetime def main(): #Время и дата могут быть отформатированы с помощью набора предустановленных строк #Управляющий код now= datetime.now() #получаем текущие время и дату #%c — локальные время и дата, %x-локальная дата, %X- локальное время print now.strftime(«%c») print now.strftime(«%x») print now.strftime(«%X») ##### Форматирование времени #### #%I/%H — 12/24 часы, %M — минуты, %S — секунды, %p — локальное время AM/PM print now.strftime(«%I:%M:%S %p») # 12-часов:минуты:секунды:AM print now.strftime(«%H:%M») # 24-часа:минуты
if __name__== «__main__»: main() # # Пример файла для работы с объектом timedelta # from datetime import date from datetime import time from datetime import datetime from datetime import timedelta
# составляем базовый timedelta и выводим его print timedelta(days=365, hours=8, minutes=15) # выводим сегодняшнюю дату print «today is: » + str(datetime.now()) # выводим дату в одном годе от сегодняшней print «one year from now it will be:» + str(datetime.now() + timedelta(days=365)) # создаем timedelta, который использует более, чем один аргумент # выводим «in one week and 4 days it will be » + str(datetime.now() + timedelta(weeks=1, days=4)) # Сколько дней прошло с Нового Года? today = date.today() # получаем текущую дату nyd = date(today.year, 1, 1) # получаем день Нового года для того же года # используем сравнение дат, чтобы определить, был ли уже в этом году праздник Нового Года # если да, используем функцию replace(), чтобы получить дату в следующем году if nyd < today: print «New Year day is already went by %d days ago» % ((today — nyd).days) |
Заключение
Для работы с датами и временем как простыми модуль datetime предоставляет различные классы или категории, такие как:
date — работа с простой датой (месяц, день, год)
time — время, независимое от дня (час, минута, секунда, микросекунда)
datetime — комбинация времени и даты (месяц, день, год, час, секунда, микросекунда)
timedelta — продолжительность времени, используемого для манипулирования датами
tzinfo— абстрактный класс для работы с часовыми поясами
Использование объектов datetime
Импорт объектов datetime перед выполнением кода является обязательным
Функция date.today используется для вывода отдельной даты / месяца / года, а также индексации дня
Объект date.time используется для получения времени в часах, минутах, секундах и миллисекундах
Форматирование даты и времени с помощью функции Strftime
Используйте функцию Strftime, чтобы изменить формат года
Время может указываться в формате 12 часов или 24 часа
Объекты Timedelta
С помощью объектов timedelta вы можете оценить время как для будущего, так и для прошлого
Рассчитать общее количество дней, оставшихся до особого дня (дня рождения) от текущего времени
Рассчитать общее количество дней, прошедших с особого дня (день рождения) до текущего времени
Источник: https://www.guru99.com
Редакция: Команда webformyself.
Бесплатный курс «Python. Быстрый старт»
Получите курс и узнайте, как создать программу для перевода текстов на Python
Получить курс
Даты, время и календари в Python: 3 основных модуля
Изменение цен на нефть со временем, изменение температуры за день, уровень цен за месяц, доходы за год – все эти компоненты объединяет время. В Data Science часто приходится сталкиваться с временными рядами. Сегодня мы расскажем о стандартных модулях Python, которые предоставляют интерфейс для дат и времени: time, datetime, calendar.
3 основных модуля
В комплекте стандартных библиотек Python имеются три основных модуля для работы со временем, датами и календарем:
time
предоставляет различные функции для управления значениями времени;datetime
поможет для работы с датами;calendar
обеспечит идеализированным григорианским календарем.
Далее мы рассмотрим, как их можно использовать в реальных проектах Data Science и повседневных задачах Python-программиста.
Модуль time для отсчета времени
Время в Python отсчитывается в секундах от начала эпохи. Эпоха может отличаться для разных операционных систем. Для Unix-систем эпоха – это январь 1970 года 00:00:00. Чтобы узнать, какая эпоха на компьютере, используется функция time.gmtime(0)
:
>>> import time >>> time.gmtime(0) time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)
Возвращается объект time_struct
, который имеет атрибуты в виде года, месяца, недели и т.д. Последний атрибут tm_isdst показывает летнее ли время (0 – нет, 1- да).
Считаем время в Python
Чтобы узнать, сколько прошло секунд с эпохи до настоящего времени, в Python используется функция time
:
>>> time.time() 1598423943.4023273
Можно получить объект time_struct
с нынешним временем в вашем часовом поясе, для этого есть localtime
:
>>> time.localtime() time.struct_time(tm_year=2020, tm_mon=8, tm_mday=26, tm_hour=13, tm_min=39, tm_sec=43, tm_wday=2, tm_yday=239, tm_isdst=0)
Получить полный форматированный вариант в читаемом виде поможет функция time.asctime()
:
>>> time.asctime() 'Wed Aug 26 13:51:33 2020'
Более удобный формат времени
Функция asctime
возвращает полную информацию о времени в определенном формате. Когда требуется самостоятельно задать формат вывода, в Python можно воспользоваться функцией strftime
, которая принимает формат вывода и объект time_struct
:
>>> time.strftime("%a %d %Y", time.localtime()) 'Wed 26 2020'
Здесь %a означает день недели, %d – день месяца, а %Y – год. Полный список доступен в официальной документации.
Из строки в time_stuct
А вот получить из строки (str) соответствующий объект time_struct
можно с помощью функции strptime:
>>> time.strptime("Wed 26 2020", "%a %d %Y") time.struct_time(tm_year=2020, tm_mon=1, tm_mday=26, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=2, tm_yday=26, tm_isdst=-1)
Не стоит путать с strftime
, так как они различаются на одну букву.
Засыпаем на некоторое время
Иногда требуется сымитировать действие, которое занимает определенное время. На помощь придет функция sleep, которая аргументом принимает секунды:
>>> def timeit(secs): ... start = time.time() ... time.sleep(secs) # заснуть на secs ... end = time.time( ... return end - start ... >>> timeit(1) 1.0011100769042969
Работаем с датами
Интерфейс для дат в Python можно найти в модуле datetime
. У него есть 3 основных класса: date
, time
и datetime
– для работы с только датами, только временем и с датой и временем, соответственно. Объект date принимает в качестве аргументов год, месяц и день:
>>> from datetime import date, time, datetime >>> date(year=2020, month=1, day=15) datetime.date(2020, 1, 15)
Объект time
принимает часы, минуты и секунды:
>>> time(hour=18, minute=45, second=30) datetime.time(18, 45, 30)
Объект datetime
принимает все вышеперечисленное:
>>> datetime(year=2020, month=1, day=15, hour=18, minute=45, second=30) datetime.datetime(2020, 1, 15, 18, 45, 30)
Сейчас и сегодня
В Python можно получить сегодняшнюю дату:
>>> date.today() datetime.date(2020, 8, 26)
А также, текущую дату и время:
>>> datetime.today() datetime.datetime(2020, 8, 26, 15, 52, 39, 757438)
Получаем даты из ISO-формата
Помимо прочего, можно получить дату из ISO формат с видом YYYY-MM-DD:
>>> date.fromisoformat("2020-01-15") datetime.date(2020, 1, 15)
В Python 8 был добавлен метод fromisocalendar
, который принимает в качестве аргументов год, неделю, месяц:
>>> date.fromisocalendar(2020, 45, 3) datetime.date(2020, 11, 4)
Формат даты из строки
Как и время из модуля time, объект datetime
имеет методы strptime
и strftime
для получение строки из даты и наоборот:
>>> datetime.strptime("Wed 26 2020", "%a %d %Y") datetime.datetime(2020, 1, 26, 0, 0) >>> today = datetime.today() >>> today.strftime("%a %d %Y") 'Wed 26 2020'
Из секунд в даты
Как уже было сказано, time.time
возвращает количество секунд, которые начинаются с эпохи. Эти секунды также можно перевести в дату и время:
>>> now = time.time() >>> datetime.fromtimestamp(now) datetime.datetime(2020, 8, 26, 13, 39, 3, 402327)
Сколько времени прошло
В Python-модуле datetime
имеется специальный объект timedelta
, который используется для разницы между датами
>>> from datetime import timedelta >>> timedelta(days=10, seconds=25) datetime.timedelta(days=10, seconds=25)
Например, можно получить разницу между сегодняшним и вчерашним днями:
>>> today = datetime.today() >>> yesterday = date(2020, 8, 25) >>> today - yesterday datetime.timedelta(days=1)
Для более точного подсчета можно добавить часы, минуты, секунды.
Работаем с календарем
В Python также можно работать с календарем, который есть в модуле calendar
. Объект Calendar позволяет итерировать дни и недели в месяце, в году и т.д. Например, метод monthdatescalendar
вернет список дней (объекты datetime
) заданного месяца и года, причем дополнит их так, чтобы начинался с первого дня понедельника прошлого месяца и заканчивался последним воскресенья следующего (для августа 2020 – это 27 июля и 6 сентября):
>>> from calendar import Calendar >>> c = Calendar() >>> c.monthdatescalendar(2020, 8) [datetime.date(2020, 7, 27), datetime.date(2020, 7, 28), ... datetime.date(2020, 8, 1), datetime.date(2020, 8, 2), ... datetime.date(2020, 8, 31), ... datetime.date(2020, 9, 6)]
А вот метод yeardatescalendar
вернет список дней заданного года. И в этом случае он будет каждый месяц дополнять днями первого понедельника и последнего воскресенья, поэтому если требуется посчитать количество дней в году лучше использовать функцию max
для месяца, а не len
.
В Python 3.7 были добавлены методы, которые возвращают не список, а генератор (о них мы писали тут). Поэтому вместо monthdatescalendar
можно использовать itermonthdays
.
Печатаем календарь на месяц
В Python можно получить календарь в читаемом формате с помощью prmonth:
>>> import calendar >>> calendar.prmonth(2020, 8) August 2020 Mo Tu We Th Fr Sa Su 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Печатаем календарь на год
А вот функция prcal
напечатает весь календарь заданного года:
>>> calendar.prcal(2020) January February March Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su 1 2 3 4 5 1 2 1 6 7 8 9 10 11 12 3 4 5 6 7 8 9 2 3 4 5 6 7 8 13 14 15 16 17 18 19 10 11 12 13 14 15 16 9 10 11 12 13 14 15 20 21 22 23 24 25 26 17 18 19 20 21 22 23 16 17 18 19 20 21 22 27 28 29 30 31 24 25 26 27 28 29 23 24 25 26 27 28 29 30 31 ...остальные месяцы
Дни недели
Что не перечислять дни недели самостоятельно (Monday, Tuesday и т.д), можно использовать готовые перечисления. Также с функцией weekday можно узнать день недели заданного дня:
>>> calendar.WEDNESDAY 2 >>> calendar.weekday(2020, 8, 26) 2
Еще больше подробностей вы сможете о работе со временем, датами и временными рядами в целом, вы узнаете на наших Python-курсах в лицензированном учебном центре обучения и повышения квалификации IT-специалистов в Москве.
Web-разработка • Python и Flask
В Python есть два модуля для работы с датой в временем: datetime
и time
.
Модуль datetime
Модуль datetime
содержит классы:
datetime.date
datetime.time
datetime.datetime
datetime.timedelta
Также существует класс tzinfo
, который применяется для работы с часовыми поясами.
Класс datetime.date
Класс 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
Класс 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)
Получить из объекта datetime
отдельно дату и отдельно время:
>>> 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)
Классы datetime.date
и datetime.datetime
содержат метод strftime()
, который позволяет создавать строку, отображающую время в более понятной для человека форме.
>>> 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'
%a | Сокращенное название дня недели |
%A | Полное название дня недели |
%b | Сокращенное название месяца |
%B | Полное название месяца |
%c | Дата и время |
%d | День месяца [01,31] |
%H | 24-часовой формат часа [00,23] |
%I | 12-часовой формат часа [01,12] |
%j | День года. Цифровой формат [001,366] |
%m | Номер месяца. Цифровой формат [01,12] |
%M | Минута. Цифровой формат [00,59] |
%p | До полудня или после (AM или PM) |
%S | Секунда. Цифровой формат [00,61] |
%U | Номер недели в году. Цифровой формат [00,53] (с воскресенья) |
%w | День недели. Цифровой формат [0(воскресенье), 6] |
%W | Номер недели в году. Цифровой формат [00,53] (с понедельника) |
%x | Дата |
%X | Время |
%y | Год без века. Цифровой формат [00,99] |
%Y | Год с веком. Цифровой формат |
%Z | Временная зона |
%% | Знак процента |
Методы класса datetime
:
datetime.today()
— объектdatetime
из текущей даты и времени; работает также, как иdatetime.now()
со значениемtz=None
.datetime.now(tz=None)
— объектdatetime
из текущей даты и времени, местное время.datetime.utcnow()
— объектdatetime
из текущей даты и времени, по Гринвичу.datetime.fromtimestamp(timestamp)
— дата из стандартного представления времени.datetime.fromordinal(ordinal)
— дата из числа, представляющего собой количество дней, прошедших с 01.01.1970.datetime.combine(date, time)
— объектdatetime
из комбинации объектовdate
иtime
.datetime.strptime(date_string, format)
— преобразует строку вdatetime
(так же, как и функцияstrptime
из модуляtime
).datetime.strftime(format)
— преобразует объектdatetime
в строку согласно формату.datetime.date()
— объект даты (с отсечением времени).datetime.time()
— объект времени (с отсечением даты).datetime.replace([year[, month[, day[, hour[, minute[, second[, microsecond[, tzinfo]]]]]]]])
— возвращает новый объектdatetime
с изменёнными атрибутами.datetime.timetuple()
— возвращаетstruct_time
изdatetime
.datetime.toordinal()
— количество дней, прошедших с 01.01.1970.datetime.timestamp()
— возвращает время в секундах с начала эпохи Unix.datetime.weekday()
— день недели в виде числа, понедельник — 0, воскресенье — 6.datetime.isoweekday()
— день недели в виде числа, понедельник — 1, воскресенье — 7.datetime.isocalendar()
— кортеж (год в формате ISO, ISO номер недели, ISO день недели).datetime.isoformat(sep='T')
— красивая строка видаYYYY-MM-DDTHH:MM:SS.mmmmmm
или, еслиmicrosecond == 0
,YYYY-MM-DDTHH:MM:SS
datetime.ctime()
— возвращает строковое представление текущего местного времени.
Класс datetime.timedelta
Класс datetime.timedelta
позволяет выполнять операции над датами — складывать, вычитать, сравнивать. Конструктор принимает именованные аргументы days
, weeks
, hours
, minutes
, seconds
, milliseconds
, microseconds
:
>>> delta = datetime.timedelta(days = 5, hours = 1, minutes = 1) >>> delta datetime.timedelta(5, 3660)
Интервал времени 5 дней, 1 час и 1 минута. Получить результат можно с помощью атрибутов days
, seconds
и microseconds
(5 дней и 3660 секунд):
>>> delta.days 5 >>> delta.seconds 3660
Получить результат в секундах позволяет метод total_seconds()
:
>>> 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)
Модуль time
Модуль основан на «эпохе Unix», которая началась 1 января 1970 года:
>>> import time >>> print(time.gmtime(0)) time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)
Функция time.time()
возвращает время в секундах по Гринвичу, начиная с эпохи Unix, как число с плавающей запятой:
>>> time.time() 1524561056.103065
Функция time.ctime([сек])
преобразует время, выраженное в секундах с начала эпохи Unix, в строку вида «Tue Apr 24 10:36:06 2018»:
>>> print(time.ctime()) Tue Apr 24 10:36:06 2018
Функция time.gmtime([сек])
возвращает время по Гринвичу как объект struct_time
>>> time.gmtime() time.struct_time(tm_year=2018, tm_mon=4, tm_mday=24, tm_hour=9, tm_min=6, tm_sec=29, tm_wday=1, tm_yday=114, tm_isdst=0)
Функция time.localtime([сек])
возвращает местное время (с учетом часового пояса) как объект struct_time
>>> time.localtime() time.struct_time(tm_year=2018, tm_mon=4, tm_mday=24, tm_hour=12, tm_min=6, tm_sec=51, tm_wday=1, tm_yday=114, tm_isdst=0)
Свойство time.altzone
показывает смещение часового пояса в секундах к западу от нулевого меридиана. Если часовой пояс находится восточнее, смещение отрицательно:
>>> time.altzone -14400
Функция time.sleep()
приостановливает выполнение скрипта на определенное количество секунд.
Свойства и методы класса time
time.altzone
— смещение часового пояса в секундах от нулевого меридиана.time.time()
— возвращает текущее время в секундах по Гринвичу, прошедшее с начала эпохи Unix.time.asctime([time_tuple])
— возвращает строкове представление переданной либо текущей даты.time.ctime([сек])
— возвращает строковое представление текущего местного времени.time.gmtime([сек])
— возвращает объектstruct_time
, текущего или переданного времени по Гринвичу.time.localtime([сек])
— возвращает объектstruct_time
, текущего или переданного времени. Представляющий местное время с начала эпохи Unix.time.mktime(time_tuple)
— преобразует кортеж или объектstruct_time
во время в секундах.time.sleep(сек)
— приостановить выполнение программы на заданное количество секунд.time.strftime(формат, [time_tuple])
— преобразует кортеж илиstruct_time
в строку по формату.
Дополнительно
Поиск:
Python • Web-разработка • locale • Дата • Модуль • время • и
Модуль datetime | Python 3 для начинающих и чайников
Модуль datetime предоставляет классы для обработки времени и даты разными способами. Поддерживается и стандартный способ представления времени, однако больший упор сделан на простоту манипулирования датой, временем и их частями.
Классы, предоставляемые модулем datetime:
Класс datetime.date(year, month, day) — стандартная дата. Атрибуты: year, month, day. Неизменяемый объект.
Класс datetime.time(hour=0, minute=0, second=0, microsecond=0, tzinfo=None) — стандартное время, не зависит от даты. Атрибуты: hour, minute, second, microsecond, tzinfo.
Класс datetime.timedelta — разница между двумя моментами времени, с точностью до микросекунд.
Класс datetime.tzinfo — абстрактный базовый класс для информации о временной зоне (например, для учета часового пояса и / или летнего времени).
Класс datetime.datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None) — комбинация даты и времени.
Обязательные аргументы:
- datetime.MINYEAR (1) ≤ year ≤ datetime.MAXYEAR (9999)
- 1 ≤ month ≤ 12
- 1 ≤ day ≤ количество дней в данном месяце и году
Необязательные:
- 0 ≤ minute < 60
- 0 ≤ second < 60
- 0 ≤ microsecond < 1000000
Методы класса datetime:
datetime.today() — объект datetime из текущей даты и времени. Работает также, как и datetime.now() со значением tz=None.
datetime.fromtimestamp(timestamp) — дата из стандартного представления времени.
datetime.fromordinal(ordinal) — дата из числа, представляющего собой количество дней, прошедших с 01.01.1970.
datetime.now(tz=None) — объект datetime из текущей даты и времени.
datetime.combine(date, time) — объект datetime из комбинации объектов date и time.
datetime.strptime(date_string, format) — преобразует строку в datetime (так же, как и функция strptime из модуля time).
datetime.strftime(format) — см. функцию strftime из модуля time.
datetime.date() — объект даты (с отсечением времени).
datetime.time() — объект времени (с отсечением даты).
datetime.replace([year[, month[, day[, hour[, minute[, second[, microsecond[, tzinfo]]]]]]]]) — возвращает новый объект datetime с изменёнными атрибутами.
datetime.timetuple() — возвращает struct_time из datetime.
datetime.toordinal() — количество дней, прошедших с 01.01.1970.
datetime.timestamp() — возвращает время в секундах с начала эпохи.
datetime.weekday() — день недели в виде числа, понедельник — 0, воскресенье — 6.
datetime.isoweekday() — день недели в виде числа, понедельник — 1, воскресенье — 7.
datetime.isocalendar() — кортеж (год в формате ISO, ISO номер недели, ISO день недели).
datetime.isoformat(sep=’T’) — красивая строка вида «YYYY-MM-DDTHH:MM:SS.mmmmmm» или, если microsecond == 0, «YYYY-MM-DDTHH:MM:SS»
datetime.ctime() — см. ctime() из модуля time.
Пример работы с классом datetime:
>>> from datetime import datetime, date, time >>> # Using datetime.combine() >>> d = date(2005, 7, 14) >>> t = time(12, 30) >>> datetime.combine(d, t) datetime.datetime(2005, 7, 14, 12, 30) >>> # Using datetime.now() or datetime.utcnow() >>> datetime.now() datetime.datetime(2007, 12, 6, 16, 29, 43, 79043) # GMT +1 >>> datetime.utcnow() datetime.datetime(2007, 12, 6, 15, 29, 43, 79060) >>> # Using datetime.strptime() >>> dt = datetime.strptime("21/11/06 16:30", "%d/%m/%y %H:%M") >>> dt datetime.datetime(2006, 11, 21, 16, 30) >>> # Using datetime.timetuple() to get tuple of all attributes >>> tt = dt.timetuple() >>> for it in tt: ... print(it) ... 2006 # year 11 # month 21 # day 16 # hour 30 # minute 0 # second 1 # weekday (0 = Monday) 325 # number of days since 1st January -1 # dst - method tzinfo.dst() returned None >>> # Date in ISO format >>> ic = dt.isocalendar() >>> for it in ic: ... print(it) ... 2006 # ISO year 47 # ISO week 2 # ISO weekday >>> # Formatting datetime >>> dt.strftime("%A, %d. %B %Y %I:%M%p") 'Tuesday, 21. November 2006 04:30PM'
Python 101: Работа с датой и временем
Python предоставляет разработчику несколько инструментов для работы с датой и временем. В этой статье мы рассмотрим модули datetime и time . Мы изучим, как они работают, и некоторые общие способы их использования. Начнем с модуля datetime !
Модуль datetime
Мы узнаем о следующих классах из модуля datetime :
- дата и время.дата
- datetime.timedelta
- datetime.datetime
Они будут охватывать большинство случаев, когда вам понадобится использовать объект date и datetime в Python. Также существует класс tzinfo для работы с часовыми поясами, который мы не будем рассматривать. Не стесняйтесь взглянуть на документацию Python для получения дополнительной информации об этом классе.
datetime.date
Python может представлять даты несколькими способами. Мы собираемся взглянуть на дату и время .date , так как это один из самых простых объектов даты.
>>> datetime.date (2012, 13, 14) Отслеживание (последний вызов последний): Файл "", строка 1, в builtins.ValueError: месяц должен быть в 1..12 >>> datetime.date (2012, 12, 14) datetime.date (2012, 12, 14)
Этот код показывает, как создать простой объект даты. Класс даты принимает три аргумента: год, месяц и день. Если вы передадите ему недопустимое значение, вы увидите ValueError , как показано выше.В противном случае вы увидите возвращенный объект datetime.date . Давайте посмотрим на другой пример:
>>> импорт datetime >>> d = datetime.date (2012, 12, 14) >>> д.год 2012 г. >>> день 14 >>> d.month 12
Здесь мы присваиваем объект даты переменной d . Теперь мы можем получить доступ к различным компонентам даты по имени, например d.year или d.month. А теперь давайте узнаем, какой сегодня день:
.
>>> datetime.date.today () datetime.date (2014, 3, 5)
Это может быть полезно, когда вам нужно записать, какой сегодня день. Или, возможно, вам нужно выполнить расчет на основе даты на основе сегодняшнего дня. Тем не менее, это небольшой удобный метод.
datetime.datetime
Объект datetime.datetime содержит всю информацию из datetime.date плюс объект datetime.time. Давайте создадим пару примеров, чтобы лучше понять разницу между этим объектом и datetime.объект даты.
>>> datetime.datetime (2014, 3, 5) datetime.datetime (2014, 3, 5, 0, 0) >>> datetime.datetime (2014, 3, 5, 12, 30, 10) datetime.datetime (2014, 3, 5, 12, 30, 10) >>> d = datetime.datetime (2014, 3, 5, 12, 30, 10) >>> д.год 2014 г. >>> d.second 10 >>> d.hour 12
Здесь мы видим, что datetime.datetime принимает несколько дополнительных аргументов: год, месяц, день, час, минута и секунда.Он также позволяет указать информацию о микросекундах и часовом поясе. Когда вы работаете с базами данных, вы часто будете использовать эти типы объектов. В большинстве случаев вам потребуется преобразовать формат даты или даты и времени Python в формат даты и времени или метки времени SQL. Вы можете узнать, что сегодня происходит с datetime.datetime, используя два разных метода:
>>> datetime.datetime.today () datetime.datetime (2014, 3, 5, 17, 56, 10, 737000) >>> datetime.datetime.now () datetime.datetime (2014, 3, 5, 17, 56, 15, 418000)
В модуле datetime есть еще один метод, о котором вы должны знать, — strftime . Этот метод позволяет разработчику создать строку, представляющую время в более удобочитаемом формате. Есть целая таблица параметров форматирования, которую вам следует прочитать в документации Python, раздел 8.1.7. Мы рассмотрим несколько примеров, чтобы показать вам возможности этого метода:
>>> datetime.datetime.today (). strftime ("% Y% m% d") '20140305' >>> сегодня = datetime.datetime.today () >>> today.strftime ("% m /% d /% Y") '03 / 05/2014 ' >>> today.strftime ("% Y-% m-% d-% H.% M.% S") '2014-03-05-17.59.53'
Первый пример — своего рода взлом. Он показывает, как преобразовать сегодняшний объект datetime в строку, соответствующую формату ГГГГММДД (год, месяц, день). Второй пример лучше. Здесь мы назначаем сегодняшний объект datetime переменной с именем today , а затем пробуем две разные операции форматирования строк.Первый добавляет косую черту между элементами datetime, а также меняет его порядок, чтобы он стал месяцем, днем, годом. В последнем примере создается своего рода метка времени в довольно типичном формате: YYYY-MM-DD.HH.MM.SS . Если вы хотите перейти к двузначному году, вы можете заменить % и на % и .
datetime.timedelta
Объект datetime.timedelta представляет продолжительность времени. Другими словами, это разница между двумя датами или временем.Давайте посмотрим на простой пример:
>>> сейчас = datetime.datetime.now () >>> сейчас datetime.datetime (2014, 3, 5, 18, 13, 51, 230000) >>> затем = datetime.datetime (2014, 2, 26) >>> delta = сейчас - потом >>> тип (дельта) >>> delta.days 7 >>> delta.seconds 65631
Здесь мы создаем два объекта datetime. Один на сегодня и один неделю назад. Затем мы берем разницу между ними.Это возвращает объект timedelta, который мы можем затем использовать, чтобы узнать количество дней или секунд между двумя датами. Если вам нужно знать количество часов или минут между ними, вам придется использовать математику, чтобы это вычислить. Вот один из способов сделать это:
>>> секунды = delta.total_seconds () >>> часы = секунды // 3600 >>> часы 186,0 >>> минут = (секунд% 3600) // 60 >>> минут 13,0
Это говорит нам о том, что в неделе 186 часов 13 минут.Обратите внимание, что мы используем двойную косую черту в качестве оператора деления. Это подразделение этажа .
Теперь мы готовы двигаться дальше и немного узнать о модуле time !
Модуль времени
Модуль time предоставляет разработчику Python доступ к различным функциям, связанным со временем. Модуль времени основан на так называемой эпохе , точке начала времени. Для систем Unix эпоха пришлась на 1970 год.Чтобы узнать, какая эпоха в вашей системе, попробуйте запустить следующее:
>>> время импорта >>> time.gmtime (0) time.struct_time (tm_year = 1970, tm_mon = 1, tm_mday = 1, tm_hour = 0, tm_min = 0, tm_sec = 0, tm_wday = 3, tm_yday = 1, tm_isdst = 0)
Я запускал это в Windows 7, и мне тоже кажется, что время началось в 1970 году. В любом случае, в этом разделе мы будем изучать следующие функции, связанные со временем:
- время.ctime
- время сна
- time.strftime
- время. Время
Приступим!
time.ctime
Функция time.ctime преобразует время в секундах с начала эпохи в строку, представляющую местное время. Если ничего не передать, то возвращается текущее время. Давайте попробуем пару примеров:
>>> время импорта >>> time.ctime () 'Чт, 06 марта, 07:28:48 2014' >>> время.ctime (1384112639) 'Вс, 10 ноя, 13:43:59 2013'
Здесь мы показываем результаты вызова ctime вообще без ничего и с довольно случайным числом секунд с начала эпохи. Я видел что-то, что использовалось, когда кто-то сохранял дату в секундах с эпохи, а затем они хотели преобразовать ее во что-то, что может понять человек. Немного проще сохранить большое целое (или длинное) число в базе данных, чем возиться с форматированием его из объекта datetime в любой объект даты, который принимает база данных.Конечно, у этого также есть недостаток, заключающийся в том, что вам нужно преобразовать целое число или значение с плавающей запятой обратно в строку.
время сна
Функция time.sleep дает разработчику возможность приостановить выполнение вашего скрипта на заданное количество секунд. Это все равно, что добавить паузу в вашу программу. Я нашел это лично полезным, когда мне нужно подождать секунду, пока файл завершит закрытие или фиксация базы данных завершится. Давайте посмотрим на пример. Откройте новое окно в IDLE и сохраните следующий код:
время импорта для x в диапазоне (5): время.сон (2) print («Спал 2 секунды»)
Теперь запустите код в IDLE. Это можно сделать, перейдя в меню Run , а затем выбрав пункт меню Run module . Когда вы это сделаете, вы увидите, что он пять раз распечатывает фразу * Спал 2 секунды * с двухсекундной паузой между каждой печатью. Это действительно так просто!
time.strftime
Модуль time имеет функцию strftime , которая работает почти так же, как версия datetime.Разница в основном заключается в том, что он принимает для ввода: кортеж или объект struct_time , как те, которые возвращаются при вызове time.gmtime () или time.localtime () . Вот небольшой пример:
>>> time.strftime ("% Y-% m-% d-% H.% M.% S", time.localtime ()) '2014-03-06-20.35.56'
Этот код очень похож на код временной метки, который мы создали в части, посвященной дате и времени в этой главе. Я думаю, что метод datetime немного более интуитивно понятен, поскольку вы просто создаете дату и время .datetime , а затем вызовите его метод strftime в желаемом формате. С модулем времени вы должны передать формат плюс кортеж времени. Вам действительно решать, какой из них наиболее подходит для вас.
время. Время
Функция time.time вернет время в секундах с начала эпохи в виде числа с плавающей запятой. Давайте посмотрим:
>>> time.time () 1394199262,318
Это было довольно просто.Вы можете использовать это, если хотите сохранить текущее время в базе данных, но не хотите беспокоиться о преобразовании его в метод datetime базы данных. Вы также можете вспомнить, что метод ctime принимает время в секундах, поэтому мы могли бы использовать time.time , чтобы получить количество секунд для передачи ctime, например:
>>> time.ctime (time.time ()) 'Пт, 07 мар, 07:36:38 2014'
Если вы немного покопаетесь в документации для модуля времени или просто немного поэкспериментируете с ним, вы, вероятно, найдете несколько других применений этой функции.
Завершение
На этом этапе вы должны знать, как работать с датой и временем, используя стандартные модули Python. Python дает вам много возможностей, когда дело доходит до работы с датами. Вы найдете эти модули полезными, если вам когда-нибудь понадобится создать приложение, которое отслеживает встречи или которое должно запускаться в определенные дни. Также они полезны при работе с базами данных.
Дополнительная литература
.
дат Python
Даты Python
Дата в Python не является отдельным типом данных, но мы можем импортировать модуль
с именем datetime
для работы с датами как date
объекты.
Пример
Импортировать модуль datetime и отобразить текущую дату:
импорт datetime
x = datetime.datetime.now ()
print (x)
Попробуй сам »
Вывод даты
Когда мы выполним код из приведенного выше примера, результат будет:
Дата содержит год, месяц, день, час, минуту, секунду и микросекунду.
Модуль datetime
имеет много методов для возврата информации о дате
объект.
Вот несколько примеров, подробнее о них вы узнаете позже.
Глава
Пример
Вернуть год и название дня недели:
импорт datetime
x = datetime.datetime.now ()
print (x.year)
print (x.strftime («% A»))
Попробуй сам »
Создание объектов даты
Для создания даты мы можем использовать класс datetime ()
(конструктор)
datetime
модуль.
Класс datetime ()
требует трех параметров для создания даты: год,
день месяца.
Пример
Создать объект даты:
импорт datetime
x = datetime.datetime (2020, 5, 17)
print (x)
Попробуй сам »
Класс datetime ()
также принимает параметры для времени и часового пояса (час,
минута, секунда, микросекунда, тональная зона), но они не являются обязательными и имеют значение по умолчанию
значение 0
, ( Нет
для часового пояса).
Метод strftime ()
Объект datetime
имеет метод форматирования объектов даты в читаемые строки.
Метод называется strftime ()
и принимает один параметр,
формат
, чтобы указать формат возвращаемой строки:
Пример
Отображение названия месяца:
импорт datetime
x = datetime.datetime (2018, 6, 1)
print (x.strftime («% B»))
Попробуй сам »
Ссылка на все коды юридических форматов:
Директива | Описание | Пример | Попробуйте |
---|---|---|---|
% | Weekday, короткая версия | ср | Попробуй » |
% А | Weekday, полная версия | среда | Попробуй » |
% w | День недели в виде числа 0-6, 0 — воскресенье | 3 | Попробуй » |
% d | День месяца 01-31 | 31 | Попробуй » |
% б | Название месяца, короткая версия | декабрь | Попробуй » |
% В | Название месяца, полная версия | декабрь | Попробуй » |
% м | Месяц в виде числа 01-12 | 12 | Попробуй » |
% и | Год, короткая версия, без века | 18 | Попробуй » |
% Y | Год, полная версия | 2018 | Попробуй » |
% В | Час 00-23 | 17 | Попробуй » |
% I | Часы 00-12 | 05 | Попробуй » |
% п | AM / PM | PM | Попробуй » |
% M | Минуты 00-59 | 41 | Попробуй » |
% S | Второй 00-59 | 08 | Попробуй » |
% f | микросекунда 000000-999999 | 548513 | Попробуй » |
% z | UTC смещение | +0100 | |
% Z | Часовой пояс | CST | |
% и | Число дней года 001-366 | 365 | Попробуй » |
% U | Номер недели в году, воскресенье как первый день недели, 00-53 | 52 | Попробуй » |
% Вт | Номер недели в году, понедельник как первый день недели, 00-53 | 52 | Попробуй » |
% с | Локальная версия даты и времени | Пн 31 дек 17:41:00 2018 | Попробуй » |
% x | Локальная версия даты | 31.12.18 | Попробуй » |
% X | Локальная версия времени | 17:41:00 | Попробуй » |
%% | Символ% | % | Попробуй » |
.
datetime — Основные типы даты и времени — документация Python 3.8.6
Хотя арифметика даты и времени поддерживается, основное внимание при реализации уделяется
об эффективном извлечении атрибутов для форматирования и обработки вывода.
Знающие и наивные объекты
Объекты даты и времени можно разделить на «осведомленные» или «наивные» в зависимости от
включают ли они информацию о часовом поясе.
С достаточным знанием применимого алгоритмического и политического времени
настройки, такие как часовой пояс и летнее время,
объект , осведомленный о , может располагаться относительно других осведомленных объектов.Осознающий объект представляет собой конкретный момент времени, который не открыт для
интерпретация.
наивный объект не содержит достаточно информации для однозначного определения местоположения
относительно других объектов даты / времени. Представляет ли наивный объект
Всемирное координированное время (UTC), местное время или время в другом часовом поясе
полностью зависит от программы, так же как от программы зависит, будет ли
конкретное число представляет метры, мили или массу. Наивные объекты легко
понимать и работать, за счет игнорирования некоторых аспектов реальности.
Для приложений, требующих осведомленных объектов, datetime
и time
объекты имеют необязательный атрибут информации о часовом поясе, tzinfo
, который
может быть установлен как экземпляр подкласса абстрактного класса tzinfo
.
Эти объекты tzinfo
собирают информацию о смещении от UTC.
время, название часового пояса и то, действует ли летнее время.
Только один конкретный класс tzinfo
, часовой пояс класс
, является
поставляется модулем datetime
.Часовой пояс
класс может
представляют собой простые часовые пояса с фиксированными смещениями от UTC, например сам UTC или
Часовые пояса Северной Америки EST и EDT. Поддержка часовых поясов на более глубоких уровнях
детали до приложения. Правила корректировки времени по
мир больше политический, чем рациональный, часто меняется, и нет
стандарт подходит для всех приложений, кроме UTC.
.
8.1. datetime — Основные типы даты и времени — документация Python 2.7.18
Модуль datetime
предоставляет классы для управления датой и временем в
как простые, так и сложные способы. Хотя арифметика даты и времени поддерживается,
Основное внимание в реализации уделяется эффективному извлечению атрибутов для вывода
форматирование и манипуляции. Для связанных функций см. Также
время
и календарь
модуля.
Есть два типа объектов даты и времени: «наивные» и «осведомленные».
Осведомленный объект обладает достаточными знаниями о применимых алгоритмических и
изменение политического времени, например, часовой пояс и летнее время
информация, чтобы расположить себя относительно других осведомленных объектов. Осознающий объект
используется для обозначения определенного момента времени, который не открыт для
интерпретация.
Наивный объект не содержит достаточно информации, чтобы однозначно определить его местонахождение.
относительно других объектов даты / времени. Представляет ли наивный объект
Всемирное координированное время (UTC), местное время или время в другом часовом поясе
полностью зависит от программы, точно так же, как и от программы, зависит ли конкретный
число представляет метры, мили или массу.Наивные объекты легко понять
и работать с ними, игнорируя некоторые аспекты реальности.
Для приложений, требующих осведомленных объектов, datetime
и time
объекты имеют необязательный атрибут информации о часовом поясе, tzinfo
, который
может быть установлен как экземпляр подкласса абстрактного класса tzinfo
.
Эти объекты tzinfo
собирают информацию о смещении от UTC.
время, название часового пояса и то, действует ли летнее время.Запись
что никакие конкретные классы tzinfo
не поставляются datetime
модуль. Поддержка часовых поясов на любом уровне детализации до
приложение. Правила корректировки времени во всем мире более
политический, чем рациональный, и нет стандарта, подходящего для всех
заявление.
Модуль datetime
экспортирует следующие константы:
-
datetime.
MINYEAR
Наименьший номер года, разрешенный в объекте
date
илиdatetime
.MINYEAR
— это1
.
-
datetime.
MAXYEAR
Наибольший номер года, разрешенный в объекте
date
илиdatetime
.
MAXYEAR
— это9999
.
См. Также
- Модуль
Календарь
Общие функции, связанные с календарем.
- Модуль
время
Доступ и преобразование времени.
8.1.1. Доступные типы
- класс
datetime.
дата
Идеализированная наивная дата, предполагающая, что текущий григорианский календарь всегда был таким, и
всегда будет, по сути. Атрибуты:год
,месяц
и
день
.
- класс
datetime.
время
Идеализированное время, не зависящее от конкретного дня, при условии, что каждый день
имеет ровно 24 * 60 * 60 секунд (здесь нет понятия «дополнительные секунды»).Атрибуты:час
,минута
,секунда
,микросекунда
,
иtzinfo
.
- класс
datetime.
дата и время
Комбинация даты и времени. Атрибуты:
год
,месяц
,
день
,час
,минута
,секунда
,микросекунда
,
иtzinfo
.
- класс
datetime.
timedelta
Продолжительность, выражающая разницу между двумя
, датой
,временем
,
илиэкземпляров datetime
с разрешением микросекунды.
- класс
datetime.
tzinfo
Абстрактный базовый класс для информационных объектов часового пояса. Они используются
datetime
иtime
классы, чтобы обеспечить настраиваемое понятие
корректировка времени (например, для учета часового пояса и / или перехода на летнее время
время).
Объекты этих типов неизменяемы.
Объекты типа дата
всегда наивны.
Объект типа time
или datetime
может быть наивным или осведомленным.
Объект datetime
d знает, если d.tzinfo
не None
и
d.tzinfo.utcoffset (d)
не возвращает Нет
. Если d.tzinfo
— это
Нет
, или если d.tzinfo
не Нет
, но d.tzinfo.utcoffset (d)
возвращает Нет
, d наивно. раз
объект т осведомлен
если t.tzinfo
не равно Нет
и t.tzinfo.utcoffset (Нет)
не возвращает
Нет
. Иначе т наивно.
Различие между наивным и осведомленным не распространяется на
.