Автор оригинала: 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 .