Класс date в python

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)

Когда вы запустите программу, вывод будет следующим:

Метод принимает два аргумента:

  1. строка, представляющая дату и время.
  2. формат, определяющий, каким образом части даты и времени расположены в переданной строке.

Кстати, коды , и используются для обозначения дня, месяца (название месяца в полном виде) и года соответственно.

Пользовательские Классы таймера Python

Вы можете создать свой собственный класс таймера, чтобы делать все в соответствии с вашими потребностями. Одним из главных преимуществ создания пользовательского класса является то, что вы можете управлять всем временем в одной строке. Вам не нужно каждый раз импортировать класс time и записывать ссылки. Кроме того, вы можете сбросить свои данные и записать все прошлые исполнения времени, чтобы выбрать лучший алгоритм для вас.

В этом разделе будет создан пользовательский класс для управления временем и регистрации всех временных различий в ваших кодах. Давайте нырнем прямо в него –

<сильный>Timer.py –

Начнем с импорта модуля времени. Затем инициализируйте класс таймера python и начните определять атрибуты и методы. До сих пор мы включали только базовый атрибут, чтобы сохранить начальную ссылку класса. Чтобы сделать его более сложным, вы можете создать несколько атрибутов. На данный момент существует три метода, перечисленных ниже –

  1. start – (Необязательно) Чтобы запустить таймер.
  2. log – Регистрировать текущее прошедшее время относительно времени начала.
  3. 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() мы смо­жем создать столь­ко пото­ков, сколь­ко нам нуж­но. Логи­ка рабо­ты такая:

  1. Под­клю­ча­ем нуж­ный модуль и класс Thread.
  2. Пишем функ­ции, кото­рые нам нуж­но выпол­нять в потоках.
  3. Созда­ём новую пере­мен­ную — поток, и пере­да­ём в неё назва­ние функ­ции и её аргу­мен­ты. Один поток = одна функ­ция на входе.
  4. Дела­ем так столь­ко пото­ков, сколь­ко тре­бу­ет логи­ка программы.
  5. Пото­ки сами сле­дят за тем, закон­чи­лась в них функ­ция или нет. Пока рабо­та­ет функ­ция — рабо­та­ет и поток.
  6. Всё это рабо­та­ет парал­лель­но и (в тео­рии) не меша­ет друг другу.

Для иллю­стра­ции запу­стим такой код:

А вот как выгля­дит резуль­тат. Обра­ти­те вни­ма­ние — пото­ки про­сы­па­ют­ся не в той после­до­ва­тель­но­сти, как мы их запу­сти­ли, а в той, в какой их выпол­нил про­цес­сор. Ино­гда это может поме­шать рабо­те про­грам­мы, но про это мы пого­во­рим отдель­но в дру­гой статье.

Текущая дата и время в 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.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector