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

Модуль dateutil в Python

При работе со сценариями, требующими данных в реальном времени, мы работаем с модулем dateutil, чтобы запланировать или получить данные в определенное время или просто

Автор оригинала: Pankaj Kumar.

При работе со сценариями, требующими данных в реальном времени, мы работаем с модулем dateutil, чтобы планировать или извлекать данные в определенное время или просто вводить данные с меткой времени извлечения.

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

К счастью, модуль dateutil был создан для того, чтобы обеспечить функциональность, облегчающую вашу жизнь.

Модуль dateutil специализируется на предоставлении расширения функций для существующего модуля datetime , и поэтому установка модуля datetime является обязательным условием.

Однако, поскольку это часть стандартной библиотеки Python, беспокоиться не о чем.

Установка модуля dateutil в Python

Прежде чем мы начнем работать с модулем dateutil , нам нужно будет сначала установить его на наш компьютер. Итак, давайте перейдем к процедуре установки:

# The command to install the module, through the pip manager.
pip install python-dateutil

Мы использовали менеджер пакетов pip для завершения установки здесь. Вы также можете использовать Anaconda для завершения установки.

Работа с модулем dateutil

Если вы успешно установили модуль, теперь мы можем приступить к работе с ним!

1.0. Модуль и его подклассы.

Модуль dateutil разделен на несколько различных подклассов, и мы сразу же перейдем к ним, чтобы вы знали, с чем работаете,

  • пасха
  • синтаксический анализатор
  • relativedelta
  • rrule
  • тз
  • и еще несколько!

В модуле не так много подклассов, но в этой статье мы рассмотрим функции только некоторых из них.

1.1 Импорт необходимых методов

Мы уже установили модуль, и теперь нам просто нужно привести методы в действие и получить наши результаты.

Итак, давайте начнем с некоторых из них!

Подождите, у нас может быть несколько шагов, прежде чем работать с модулем dateutil , и одним из них является необходимость импортировать их в первую очередь.

# We'll need to import methods from the datetime module as a base.
import datetime

# Now, let's import some methods from the dateutil subclasses.
from dateutil.relativedelta import *
from dateutil.easter import *
from dateutil.parser import *
from dateutil.rrule import *

Этот импорт позволяет нам работать со многими методами, которые нам понадобятся в этой статье.

1.2 Функциональность datetime

Прежде чем мы начнем работать с модулем dateutil , вы можете вспомнить тот факт, что модуль также зависит от модуля datetime , верно?

Что ж, это совершенно верно. Модуль dateutil работает с объектами datetime , и это означает, что нам нужно будет создать объекты datetime перед работой с ними.

Следовательно, причина импорта модуля datetime . Давайте перейдем к работе с несколькими модулями в dateutil .

1.3. Дата, время и относительная дата

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

Это означает, что мы можем добавить дни, месяцы или даже годы к используемому в данный момент объекту datetime . Он также позволяет нам работать с интервалами во времени, с объектами datetime .

# Creating a few datetime objects to work with
NOW = datetime.now()
print("The datetime right now : ", NOW)
TODAY = date.today()
print("The date today : ", TODAY)

Теперь давайте поработаем с получением информации с использованием относительных дат.

# Next month
print(NOW + relativedelta(months=+1))

# Next month, plus one week
print(NOW + relativedelta(months=+1, weeks=+1))

# Next month, plus one week, at 5 PM
print(NOW + relativedelta(months=+1, weeks=+1, hour=17))

# Next friday
print(TODAY + relativedelta(weekday=FR))

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

# Finding out the last tuesday in the month
print(TODAY + relativedelta(day=31, weekday=TU(-1)))

# We can also work with datetime objects directly
# Example: Age of Sacra

sacra_birthday = datetime(1939, 4, 5, 12, 0)
print("Sacra's Age : ", relativedelta(NOW, sacra_birthday).years)

Если вы заметили, мы извлекли только years из объекта relativedelta .

Это было использовано для чистого вывода, но, если вы хотите точно узнать, насколько старше Сакра на самом деле, попробуйте сами поработать с объектом relativedelta. 😉

1.4. Дата, время и пасха

Подкласс easter используется для вычисления даты и времени с помощью общих пасхальных календарей, что позволяет вычислять объекты datetime по отношению к различным календарям.

Подкласс довольно мал, и есть только один аргумент с тремя параметрами, который определяет весь модуль.

  • Юлианский календарь,.
  • Григорианский календарь,
  • Западный календарь,

Использование их в коде будет выглядеть примерно так,

# The Julian Calendar
print("Julian Calendar : ", easter(1324, 1))

# The Gregorian Calendar
print("Gregorian Calendar : ", easter(1324, 2))

# The Western Calendar
print("Western Calendar : ", easter(1324, 3))

1.5. Дата-время и парсер

Подкласс parser представляет собой превосходный анализатор строк даты и времени, который, как известно, способен анализировать несколько известных форматов, представляющих дату или время.

# The parser subclass
print(parse("Thu Sep 25 10:36:28 BRST 2003"))

# We can also ignore the timezone which is set to default locally
print(parse("Thu Sep 25 10:36:28 BRST 2003", ignoretz=True))

# We can also not provide a timezone, or a year
# This allows for it to return the current year, with no timezone inclusion.
print(parse("Thu Sep 25 10:36:28"))

# We can also provide variables which contain information, as values.
DEFAULT = datetime(2020, 12, 25)
print(parse("10:36", default=DEFAULT))

Существует множество вариантов, которые вы можете предоставить, включая часовые пояса, локально или явно.

Удаление информации для предоставления часовых поясов, года, времени можно выполнить с помощью переменных, переданных в функцию в качестве аргументов по умолчанию, которые вы можете посмотреть в здесь .

1.6. Дата, время и правило

Подкласс rule использует входные данные, чтобы предоставить нам информацию о повторении объекта datetime и объектов datetime соответственно.

# The rrule subclass
# Daily repetition for 20 occurrences
print(list(rrule(DAILY, count=20, dtstart=parse("20201202T090000"))))

# Repeating based on the interval
print(list(rrule(DAILY, interval=10, count=5, dtstart=parse("20201202T090000"))))

# Weekly repetition
print(list(rrule(WEEKLY, count=10, dtstart=parse("20201202T090000"))))

# Monthly repetition
print(list(rrule(MONTHLY, count=10, dtstart=parse("20201202T090000"))))

# Yearly repetition
print(list(rrule(YEARLY, count=10, dtstart=parse("20201202T090000"))))

Отличная функция модуля dateutil , этот подкласс может позволить вам работать с большим количеством задач планирования и инноваций в хранении календаря.

В самих модулях есть гораздо больше, и если вы хотите узнать больше о функциях и аргументах на более глубоком уровне, рекомендуется ознакомиться с документацией /.

Вывод

Если вы прочитали эту статью, теперь вы знаете, как модуль dateutil позволяет нам расширять информацию, предоставляемую модулем datetime , для получения результатов, которые вам обычно необходимо вычислить или обработать.

Жизнь намного проще, если вы знаете, на какой модуль обратить внимание, чтобы работать над чем-то.

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

Рекомендации