Класс date в python
Содержание:
- Understanding Time Zones
- Преобразование временных меток
- Возвращение даты, времени в привычном формате
- Формат datetime
- Пользовательские Классы таймера Python
- Модуль календаря
- Способы получить текущую дату и время в Python
- Модуль time
- Executing timing function timeit.timeit() inside command-line interface
- Что такое тик?
- Таймер обратного отсчета в python
- Модуль time
- Многопоточность на Python
- Текущая дата и время в Python на часовой пояс
- Что такое TimeTuple?
- Операции с датами
- Счетчик производительности
- Measuring Performance
Understanding Time Zones
A time zone is a region of the world that conforms to a standardized time. Time zones are defined by their offset from Coordinated Universal Time (UTC) and, potentially, the inclusion of daylight savings time (which we’ll cover in more detail later in this article).
Fun Fact: If you’re a native English speaker, you might be wondering why the abbreviation for “Coordinated Universal Time” is UTC rather than the more obvious CUT. However, if you’re a native French speaker, you would call it “Temps Universel Coordonné,” which suggests a different abbreviation: TUC.
Ultimately, the as the official abbreviation so that, regardless of language, the abbreviation would be the same.
Преобразование временных меток
Также может быть очень полезным преобразовывать время в один из самых широко применяемых форматов в вычислениях. Речь идет о временных метках Unix.
Доподлинно известно, что компьютерные системы измеряют время не так, как люди. Здесь за основу берется число секунд, которые прошли с начала Unix-эпохи, то есть с 00:00:00 UTC 1.01.1979. Базы данных, протоколы и приложения обычно задействуют временную метку.
Для ее получения в «Питоне» пригодится модуль time, следовательно, первая строка будет :
Функция возвращает пользователю число с плавающей запятой и с временной меткой Unix.
На этом все. Очень надеемся, что вы получили некоторое представление об использовании встроенных Python-библиотек и модулей, необходимых для отображения временных значений.
Возвращение даты, времени в привычном формате
Для возвращения времени в привычном формате, существует метод time.ctime(). В скобках указывается переменная или число, обозначающее количество секунд, которые прошли со старта эпохи. Этот метод возвращает все характеристики даты и времени, включая дату, год, количество часов, минут, секунд, а также день недели.
Также эту функцию можно использовать без аргументов. В этом случае она возвращает текущую дату, время и так далее.
Вот фрагмент кода, который это демонстрирует.
import time
print(time.ctime())
Tue Oct 23 10:18:23 2018
Последняя строчка – это то, что выводится в консоль, где запущен интерпретатор Python. Метод автоматически форматирует полученное количество секунд в привычный для пользователя вид. Правда, редко используются все элементы, описанные выше. Как правило, нужно получить или только времени, или исключительно сегодняшнее число. Для этого используется отдельная функция – strftime(). Но перед тем, как мы ее рассмотрим, необходимо разобрать класс time.struct_time.
Формат datetime
Представление даты и времени может отличатся в разных странах, организациях и т. д. В США, например, чаще всего используется формат «мм/дд/гггг», тогда как в Великобритании более распространен формат «дд/мм/гггг».
В Python для работы с форматами есть методы и .
Python strftime() — преобразование объекта datetime в строку
Метод определен в классах , и . Он создает форматированную строку из заданного объекта , или .
Пример 16: форматирование даты с использованием метода strftime().
from datetime import datetime now = datetime.now() t = now.strftime("%H:%M:%S") print("time:", t) s1 = now.strftime("%m/%d/%Y, %H:%M:%S") # mm/dd/YY H:M:S format print("s1:", s1) s2 = now.strftime("%d/%m/%Y, %H:%M:%S") # dd/mm/YY H:M:S format print("s2:", s2)
Когда вы запустите программу, результат будет примерно таким:
Здесь , , , и т. д. — коды для определения формата. Метод принимает один или несколько кодов и возвращает отформатированную строку на его основе.
В приведенной выше программе переменные , и являются строками.
Основные коды для определения формата:
- — год
- — месяц
- — день
- — час
- — минута
- — секунда
Python strptime()- преобразование строки в объект datetime
Метод создает объект datetime из заданной строки (представляющей дату и время).
Пример 17: метод strptime().
from datetime import datetime date_string = "21 June, 2018" print("date_string =", date_string) date_object = datetime.strptime(date_string, "%d %B, %Y") print("date_object =", date_object)
Когда вы запустите программу, вывод будет следующим:
Метод принимает два аргумента:
- строка, представляющая дату и время.
- формат, определяющий, каким образом части даты и времени расположены в переданной строке.
Кстати, коды , и используются для обозначения дня, месяца (название месяца в полном виде) и года соответственно.
Пользовательские Классы таймера Python
Вы можете создать свой собственный класс таймера, чтобы делать все в соответствии с вашими потребностями. Одним из главных преимуществ создания пользовательского класса является то, что вы можете управлять всем временем в одной строке. Вам не нужно каждый раз импортировать класс time и записывать ссылки. Кроме того, вы можете сбросить свои данные и записать все прошлые исполнения времени, чтобы выбрать лучший алгоритм для вас.
В этом разделе будет создан пользовательский класс для управления временем и регистрации всех временных различий в ваших кодах. Давайте нырнем прямо в него –
<сильный>Timer.py –
Начнем с импорта модуля времени. Затем инициализируйте класс таймера python и начните определять атрибуты и методы. До сих пор мы включали только базовый атрибут, чтобы сохранить начальную ссылку класса. Чтобы сделать его более сложным, вы можете создать несколько атрибутов. На данный момент существует три метода, перечисленных ниже –
- start – (Необязательно) Чтобы запустить таймер.
- log – Регистрировать текущее прошедшее время относительно времени начала.
- milestone – Сбросить таймер и начать его отсчет с 0.
import time class Timer: def __init__(self): .time() def start(self): .time() def log(self): .time() - self.start print('Time log -',logger) def milestone(self): .time()
<сильный>example.py –
Примеры использования вышеуказанного класса приведены ниже. Как вы можете видеть, вы можете сохранить свой код чистым, создав пользовательский класс таймера и повысив гибкость.
import timer .Timer() for i in range(1000000): pass time.log() for i in range(1000000): pass time.log()
Выход –
Модуль календаря
Модуль календаря предоставляет функции, связанные с календарем, включая функции печати текстового календаря на определенный месяц или год.
По умолчанию в календаре первый день недели — понедельник, а последний — воскресенье. Чтобы изменить это, вызовите функцию calendar.setfirstweekday () .
Вот список функций, доступных с модулем календаря —
Sr.No. | Описание функции |
---|---|
1 |
calendar.calendar (год, w = 2, l = 1, c = 6) Возвращает многострочную строку с календарем для года, отформатированного в три столбца, разделенных пробелами c. w — ширина в символах каждой даты; каждая строка имеет длину 21 * w + 18 + 2 * c. l — количество строк за каждую неделю. |
2 |
calendar.firstweekday () Возвращает текущую настройку для дня недели, который начинается каждую неделю. По умолчанию при первом импортировании календаря это 0, что означает понедельник. |
3 |
calendar.isleap (год) Возвращает True, если год является високосным; в противном случае Ложь. |
4 |
calendar.leapdays (y1, y2) Возвращает общее количество високосных дней в годах в пределах диапазона (y1, y2). |
5 |
calendar.month (год, месяц, w = 2, l = 1) Возвращает многострочную строку с календарем на месяц месяц год, одну строку в неделю плюс две строки заголовка. w — ширина в символах каждой даты; каждая строка имеет длину 7 * w + 6. l — количество строк за каждую неделю. |
6 |
calendar.monthcalendar (год, месяц) Возвращает список списков целых. Каждый подсписок обозначает неделю. Дни вне месяца, месяца, года и года установлены на 0; дни в месяце устанавливаются на день, 1 и выше. |
7 |
calendar.monthrange (год, месяц) Возвращает два целых числа. Первый — это код дня недели для первого дня месяца месяца в году; второй — количество дней в месяце. Коды дня недели: от 0 (понедельник) до 6 (воскресенье); номера месяцев от 1 до 12. |
8 |
calendar.prcal (год, w = 2, l = 1, c = 6) Как печать calendar.calendar (год, w, l, c). |
9 |
calendar.prmonth (год, месяц, w = 2, l = 1) Как печать calendar.month (год, месяц, ш, л). |
10 |
calendar.setfirstweekday (день недели) Устанавливает первый день каждой недели в код дня недели. Коды дня недели: от 0 (понедельник) до 6 (воскресенье). |
11 |
calendar.timegm (tupletime) Инверсия time.gmtime: принимает момент времени в форме кортежа и возвращает тот же момент, что и число с плавающей запятой в секундах с начала эпохи. |
12 |
calendar.weekday (год, месяц, день) Возвращает код дня недели для указанной даты. Коды дня недели: от 0 (понедельник) до 6 (воскресенье); номера месяцев от 1 (январь) до 12 (декабрь). |
Способы получить текущую дату и время в Python
Теперь давайте направимся к пониманию разных желаний, чтобы получить текущую дату и время в Python.
Модуль DateTime.
Модуль поставляет классы для манипулирования датами и временами в Python.
В приведенном ниже примере мы пытаемся получить текущую дату, используя Метод из класса даты.
from datetime import date today = date.today() print("Date :", today)
Выход :
Date : 2020-04-12
Здесь Возвращает текущий Местный день Отказ И одновременно мы распечатаем дату.
Теперь давайте посмотрим на другой пример. На этот раз мы собираемся распечатать как локальную дату, так и текущее время для системы, используя модуль.
import datetime #datetime object dt = datetime.datetime.now() print("Datetime object =", dt) # printing in dd/mm/YY H:M:S format using strftime() dt_string = dt.strftime("Date: %d/%m/%Y time: %H:%M:%S") print("Current date and time =", dt_string)
Выход :
Datetime object = 2020-04-12 23:16:58.958467 Current date and time = Date: 12/04/2020 time: 23:16:58
В коде выше,
- Метод от datetime Класс возвращает текущую местную дату и время. Следовательно, на данный момент DT Удерживает объект DateTime, содержащий информацию о дате и времени
- Облико, мы используем Способ преобразования DT (объект dateTime) в форматующую строку
- Наконец, мы распечатаем Текущая дата и время по нашему желаемому
Используя маятниковый модуль
Маятник это библиотека часовой зоны, которая облегчает манипуляцию DateTime. Похож на Модуль, модуль маятника также предлагает Метод, который возвращает локальную дату и время.
Маятник может быть легко установлен с помощью команды PIP:
pip install pendulum
Пример ,
import pendulum time = pendulum.now() print(time)
Выход :
2020-04-12 23:07:22.940108+05:30
Как упоминалось ранее, Метод возвращает текущий Дата и время Как мы можем видеть с вышеуказанного выхода.
Модуль 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)
Функция возвращает время в секундах по Гринвичу, начиная с эпохи Unix, как число с плавающей запятой:
>>> time.time() 1524561056.103065
Функция преобразует время, выраженное в секундах с начала эпохи Unix, в строку вида «Tue Apr 24 10:36:06 2018»:
>>> print(time.ctime()) Tue Apr 24 10:36:06 2018
Функция возвращает время по Гринвичу как объект
>>> 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() 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 -14400
Функция приостановливает выполнение скрипта на определенное количество секунд.
Свойства и методы класса
- — смещение часового пояса в секундах от нулевого меридиана.
- — возвращает текущее время в секундах по Гринвичу, прошедшее с начала эпохи Unix.
- — возвращает строкове представление переданной либо текущей даты.
- — возвращает строковое представление текущего местного времени.
- — возвращает объект , текущего или переданного времени по Гринвичу.
- — возвращает объект , текущего или переданного времени. Представляющий местное время с начала эпохи Unix.
- — преобразует кортеж или объект во время в секундах.
- — приостановить выполнение программы на заданное количество секунд.
- — преобразует кортеж или в строку по формату.
Executing timing function timeit.timeit() inside command-line interface
The syntax to execute your function inside timeit() on the command line is as follows:
python -m timeit
Command line parameters:
- -n N: the number of times you want the code to execute.
- -r N: the number of times you want the timeit() function to repeat
- -s S: this will have setup details that will get executed before code execution.
- -t: for this, you can make use of time.time()
- -c: for this, you can make use of time.clock()
- -h: for help
- code statement: The code details.
Example:
C:\pythontest>python -m timeit -s 'text="hello world"' 20000000 loops, best of 5: 13.1 nsec per loop
Another way you can execute inside command line is as shown below:
Example :
>>> import timeit >>> print("The time taken is ",timeit.timeit(stmt='a=10;b=10;sum=a+b')) The time taken is 0.15048536300000137 >>>
Что такое тик?
Временные интервалы — это числа с плавающей точкой в секундах. Особые моменты времени выражаются в секундах с 12:00 утра, 1 января 1970 года (эпоха).
В Python есть популярный модуль времени, который предоставляет функции для работы со временем и для преобразования между представлениями. Функция time.time () возвращает текущее системное время в тиках с 12:00, 1 января 1970 года (эпоха).
пример
#!/usr/bin/python3 import time; # This is required to include time module. ticks = time.time() print ("Number of ticks since 12:00am, January 1, 1970:", ticks)
Это приведет к следующему результату:
Number of ticks since 12:00am, January 1, 1970: 1455508609.34375
Арифметика даты легко сделать с помощью галочек. Однако даты до эпохи не могут быть представлены в таком виде. Даты в далеком будущем также не могут быть представлены таким образом — точка отсечения наступает в 2038 году для UNIX и Windows.
Таймер обратного отсчета в python
Использование модуля времени
# We will use the time module import time # Create a function that will print the time def create_countdown_timer(time): print(time,"......") (input("Please entert the time in seconds:")) for times in range(time_in_sec): # call the function and pass the current time left create_countdown_timer(time_in_sec-times) # call the function in every 1 second. time.sleep(1) print("Time is up")
Please entert the time in seconds:7 7 ...... 6 ...... 5 ...... 4 ...... 3 ...... 2 ...... 1 ...... Time is up
Использование класса python Timer
# We will use the time module import time from threading import Timer # Create a function that will print the time def create_countdown_timer(time): print(time,"......") # Here you have to enter the time for which the timer will run(input("Please enter the time in seconds:")) # For the first time we will call the function manually create_countdown_timer(time_in_sec) for times in range(1,time_in_sec): # calling the Timer class every second (1,create_countdown_timer,) t.start() time.sleep(1) print("\n Time is up")
Please entert the time in seconds:10 10 ...... 9 ...... 8 ...... 7 ...... 6 ...... 5 ...... 4 ...... 3 ...... 2 ...... 1 ...... Time is up
Модуль time
Модуль предоставляет функции, которые сообщают нам время в «секундах с начала эпохи», а также другие утилиты.
Unix Epoch Time
Это формат, в котором вы должны получить временные метки для сохранения в базах данных. Это простое число с плавающей запятой, которое можно преобразовать в целое число. Это также хорошо для арифметики в секундах, так как представляет количество секунд с 1 января 1970 года 00:00:00, и это свет памяти относительно других представлений времени, которые мы будем смотреть дальше:
Эта временная метка не учитывает високосных секунд, поэтому она не линейна — високосные секунды игнорируются. Таким образом, хотя он не эквивалентен международному стандарту UTC, он близок, и, следовательно, довольно хорош для большинства случаев ведения учета.
Однако это не идеально для планирования человека. Если у вас есть будущее событие, которое вы хотите провести в определенный момент времени, вы захотите сохранить это время со строкой, которую можно проанализировать в объекте datetime или сериализованном объекте datetime (они будут описаны позже).
Вы также можете представлять текущее время способом, предпочитаемым вашей операционной системой (что означает, что оно может изменяться при изменении системных настроек, поэтому не полагайтесь на то, что оно будет стандартным для всех систем, как я ожидал, другие) , Это обычно удобно для пользователя, но обычно не приводит к строкам, которые можно сортировать в хронологическом порядке:
Вы также можете гидрировать метки времени в удобочитаемую форму с помощью :
Это преобразование также не подходит для ведения записей (за исключением текста, который будет анализироваться только людьми — и с улучшенным оптическим распознаванием символов и искусственным интеллектом, я думаю, число этих случаев уменьшится).
Многопоточность на Python
За потоки в Python отвечает модуль threading, а сам поток можно создать с помощью класса Thread из этого модуля. Подключается он так:
from threading import Thread
После этого с помощью функции Thread() мы сможем создать столько потоков, сколько нам нужно. Логика работы такая:
- Подключаем нужный модуль и класс Thread.
- Пишем функции, которые нам нужно выполнять в потоках.
- Создаём новую переменную — поток, и передаём в неё название функции и её аргументы. Один поток = одна функция на входе.
- Делаем так столько потоков, сколько требует логика программы.
- Потоки сами следят за тем, закончилась в них функция или нет. Пока работает функция — работает и поток.
- Всё это работает параллельно и (в теории) не мешает друг другу.
Для иллюстрации запустим такой код:
А вот как выглядит результат. Обратите внимание — потоки просыпаются не в той последовательности, как мы их запустили, а в той, в какой их выполнил процессор. Иногда это может помешать работе программы, но про это мы поговорим отдельно в другой статье.
Текущая дата и время в Python на часовой пояс
Когда мы говорим о надежности или методичном удобре для использования кода, Python предлагает тонны таких функций. В большинстве случаев пользователь нужна дата или время для определенного часовой пояс и используя некоторые модули, такие как или сделать работу в такой среде намного проще.
Модуль приносит Олсон Тз База данных в Python, а также позволяет получать точные и перекрестные расчеты часовых поясов.
С другой стороны, это похожая библиотека, которая наследует от datetime модуль. Он использует более чистый подход, что делает его быстрее, чем аналог ( ).
Оба модуля могут быть установлены с помощью следующих Пип команды,
Для модуль:
pip install pytz
Для модуль:
pip install pendulum
Пример
Теперь давайте возьмем пример, где мы пытаемся получить, а затем печатать дату, а также время для разных Часовые появления Отказ Это будет сделано, используя оба и модуль.
import pytz from datetime import datetime utc = pytz.timezone('UTC') pst = pytz.timezone('America/Los_Angeles') ist = pytz.timezone('Asia/Calcutta') print("Using pytz Module:") print('Current Date and Time in UTC =', datetime.now(utc)) print('Current Date and Time in PST =', datetime.now(pst)) print('Current Date and Time in IST =', datetime.now(ist)) import pendulum utc1 = pendulum.timezone('UTC') pst1 = pendulum.timezone('America/Los_Angeles') ist1 = pendulum.timezone('Asia/Calcutta') print("Using pendulum Module:") print('Current Date Time in UTC =', datetime.now(utc1)) print('Current Date Time in PST =', datetime.now(pst1)) print('Current Date Time in IST =', datetime.now(ist1))
Выход :
Здесь,
- Для обоих случаев, во-первых, мы используем Метод определен для обоих Пыта и маятник модули при прохождении требуемого часового пояса
- Затем мы передаем эти объекты часового пояса к Метод от datetime класс. Метод возвращает точную дату и время для заданного часового пояса. И, следовательно, мы напрямую распечатаем это.
Что такое TimeTuple?
Многие из функций времени Python обрабатывают время как кортеж из 9 чисел, как показано ниже —
Показатель | поле | Ценности |
---|---|---|
4-значный год | 2008 | |
1 | Месяц | От 1 до 12 |
2 | День | От 1 до 31 |
3 | Час | От 0 до 23 |
4 | минут | От 0 до 59 |
5 | второй | От 0 до 61 (60 или 61 — високосные секунды) |
6 | День недели | От 0 до 6 (0 — понедельник) |
7 | День года | С 1 по 366 (юлианский день) |
8 | Дневного сбережения | -1, 0, 1, -1 означает, что библиотека определяет DST |
Вышеуказанный кортеж эквивалентен структуре struct_time . Эта структура имеет следующие атрибуты —
Показатель | Атрибуты | Ценности |
---|---|---|
tm_year | 2008 | |
1 | tm_mon | От 1 до 12 |
2 | tm_mday | От 1 до 31 |
3 | tm_hour | От 0 до 23 |
4 | tm_min | От 0 до 59 |
5 | tm_sec | От 0 до 61 (60 или 61 — високосные секунды) |
6 | tm_wday | От 0 до 6 (0 — понедельник) |
7 | tm_yday | С 1 по 366 (юлианский день) |
8 | tm_isdst | -1, 0, 1, -1 означает, что библиотека определяет DST |
Операции с датами
Последнее обновление: 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))
НазадВперед
Счетчик производительности
Для измерения производительности важно иметь таймеры monotonic с высокой точностью. Определение наилучшего источника данных синхронизации требует наличия информации о платформе, которую Python предоставляет в perf_counter():
time_perf_counter.py import hashlib import time # Data to use to calculate md5 checksums data = open(__file__, 'rb').read() loop_start = time.perf_counter() for i in range(5): iter_start = time.perf_counter() h = hashlib.sha1() for i in range(300000): h.update(data) cksum = h.digest() now = time.perf_counter() loop_elapsed = now - loop_start iter_elapsed = now - iter_start print(time.ctime(), ': {:0.3f} {:0.3f}'.format( iter_elapsed, loop_elapsed))
Как и в случае с функцией Python time monotonic(), эпоха для perf_counter() не определяется. Значения предназначены для сравнения и вычисления, а не в качестве абсолютных значений:
$ python3 time_perf_counter.py Sun Aug 14 14:10:40 2016 : 0.487 0.487 Sun Aug 14 14:10:41 2016 : 0.485 0.973 Sun Aug 14 14:10:41 2016 : 0.494 1.466 Sun Aug 14 14:10:42 2016 : 0.487 1.953 Sun Aug 14 14:10:42 2016 : 0.480 2.434
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.