Рубрики
Без рубрики

Манипулируя даты и времена в Python

В этой статье мы охватим некоторые основные функции модуля DateTime в Python. Более конкретно, мы увидим, как извлечь текущую дату и время и как реализовать эти функции в скрипте, чтобы реализовать действия, ориентированные на то время. https://youtu.be/ccppzrdxvqpk Долгая история Короткое короткое модуль DateTime в Python позволяет вам … Манипулируя даты и времена в Python Подробнее »

Автор оригинала: Andrea Ridolfi.

В этой статье мы охватим некоторые основные особенности datetime модуль в Python. Более конкретно, мы увидим, как извлечь текущую дату и время и как реализовать эти функции в скрипте, чтобы реализовать действия, ориентированные на то время.

Короче

datetime модуль в Python Позволяет иметь дело с дата и временными выражениями. Используя такие классы, как .time () и/или .DETIME () Вы можете выразить времена и даты в выделенном формате.

Класс .timedelta () Позволяет определить определенный интервал продолжительности времени и добавить его в datetime выражение.

Метод .today () Затем можно использовать для извлечения текущего времени или/и данных. Затем вы можете преобразовать определенный интервал времени, экспрессируемый с помощью .timedelta () Класс в секунды Y, используя метод .total_seconds () Отказ

Наконец, если вы хотите извлечь сумку микросекунды из выражения времени, вы можете легко добиться результата, используя метод .Microsecond () Отказ

Модуль DateTime.

datetime Модуль содержит несколько классов, самые известные и используемые:

  • .time – Это дает как вывод идеализированного времени в формате часов: минуты: несколько секунд
  • .DateTime – дает как вывод комбинации даты и времени в формате Год - месяц - День час: минут: секунды
  • .timedelta – экспрессирует продолжительность, указанную в качестве разницы между двумя датами, временами или датами.

Следующие строки кода обеспечивают пример этих трех классов.

import datetime

# express a time
print(datetime.time(10, 23, 45))
# 10:23:45

# express a date and time
print(datetime.datetime(2019, 2, 3, 10, 23, 45))
# 2019-02-03 10:23:45

# add to a date and time a specific duration
time1 = datetime.datetime(2019, 2, 3, 10, 23, 45)
delta = datetime.timedelta(days=4, hours=3)
time2 = time1 + delta
print(time2)
# 2019-02-07 13:23:45

Как вы можете видеть в примере, можно выразить времена и даты в выделенном формате, используя модуль datetime и его два класса время и DateTime, соответственно.

Затем мы определили определенную дату и время и присваивали их значения переменной «Time1». Затем мы определяем продолжительность времени (то есть 4 дня и 3 часа) и присваиваем его переменной «дельту»; Наконец, мы получаем выражение для даты и времени, соответствующего «Time1», после прохождения времени, равных «Delta».

Обратите внимание, что при определении .timedelta () мы использовали аргументы дни и часы; Аналогичным образом, мы могли бы также указать другие интервалы, используя все доступные аргументы для этой функции (см. Официальную документацию ).

Получите текущую дату и время с .today ()

В случае, если мы хотим получить текущее время и/или текущую дату, мы можем использовать метод .today () ; Это может быть применено как к Дата и datetime Классы, и это вернет текущую дату и текущую дату и время (на микросекунде), соответственно. Следующие строки кода показывают пример того, как он работает.

#get current date
current_date = datetime.date.today()
print(current_date)
# 2021-04-10

#get current date and time
current_dt = datetime.datetime.today()
print(current_dt)
# 2021-04-10 15:17:12.641393

Выразите продолжительность в считанные секунды с .total_seconds ()

В некоторых приложениях может быть полезно выразить определенное количество времени в считанные секунды, не используя Часы: минуты: несколько секунд Обозначение.

Давайте возьмем, например, продолжительность, которую мы применяли в предыдущем разделе: это было 4 дня и 3 часа. Если мы хотим получить соответствующее количество секунд, которые соответствует этому периоду времени, нам просто нужно напечатать:

# Get the duration in seconds
print(delta.total_seconds())
# 356400.0

Вы также можете проверить, что 356400.0 является правильным ответом, сделав преобразование вручную, что было бы: 4 (дни) * 24 (часы) * 60 (минуты) * 60 (секунды) + 3 (часы) * 60 (минуты) * Отказ

Извлечь ценность микросекунда со временем обозначения с атрибутом .microsecond

Иногда нас могут быть заинтересованы в получении количества микросекунов, которые прошли из определенного мгновенного времени. В этом случае нам придется извлечь из всего временного выражения, только часть, которая указывает на микросекунды. Для этого мы можем использовать атрибут .microsecond , который дает в качестве вывода целочисленного числа, соответствующий микросекундам, прошедшим в указанном времени.

# extract the microseconds from the current time
current_microsec = datetime.datetime.today().microsecond
print(current_microsec)
# 641393

Обратите внимание, что метод .microsecond просто извлекает соответствующие микросекунды число из определенного определения времени; Он не преобразует продолжительность времени в микросекунды.

Теперь, когда мы ознакомились с некоторыми функциями для обработки даты и времени Python Мы увидим практический пример, как использовать вышеуказанные функции, чтобы выполнить управленные временем операции в пределах Python скрипт

Ссыпайте свой скрипт и разбудите его каждые три секунды

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

Начнем с получения текущей даты и времени, используя метод .dateTime.today () , Затем мы определяем интервал времени три секунды, используя метод .timedelta () Отказ После этого мы определяем будущее дату и время мгновенное время, называемое «будущее», которое получается путем суммирования в течение трех секунд промежуток времени в начальное время.

# make the script sleeping for some time
t = datetime.datetime.today()
delta = datetime.timedelta(seconds=3)
future = t + delta

Теперь нам нужно создать для петля , Для выполнения нескольких итераций (в этом примере мы будем повторять три раза), в котором мы будем «заснуть сценарий и просыпаться» попеременно.

Мы определяем продолжительность проведения сна, преобразовав 3 секунды времени в секундах; Это может звучать глупое (и в этом случае), но если бы мы выбрали более длительный интервал времени, например, дни, нам пришлось бы получить промежуточный промежуток, выраженную в считанные секунды, а также, нам нужно, чтобы это было целочисленное число , не выражены во времени обозначения.

Чтобы поставить скрипт спит, мы используем метод .sleep () , от время модуль. Этот метод принимает в качестве ввода целочисленного числа, соответствующий количеству секунды, мы хотим, чтобы наша система засыпала. Когда прошли 3 секунды, мы распечатаем текущее время с предложением, говоря, что 3 секунды фактически передавались из предыдущей итерации.

import time

for i in range(3):
    # sleep for the time difference between the initial time and the future (in sec)
    time.sleep(delta.total_seconds())
    print("It's " + str(datetime.datetime.today()) + " 3 sec have passed")

'''
   It's 2021-04-11 11:42:33.767437 3 sec have passed
   It's 2021-04-11 11:42:36.777588 3 sec have passed
   It's 2021-04-11 11:42:39.787928 3 sec have passed
'''

Заключение

В этой статье мы узнали, как разобраться со временными и датами нотами в Python И как использовать эти функции в скрипте. Мы изучили разные модули и методы получения текущего времени, даты, а также для расчета временных интервалов (и многое другое!). В конце концов, мы использовали эти функции, чтобы написать короткий скрипт, который позволил заснуть систему в течение определенного времени и просыпаться в точных интервалах времени. Этот пример может быть чрезвычайно полезен при проектировании сценариев, которые должны работать в течение длительных периодов, и мы не хотим поддерживать активную систему для всего этого времени.