Самый беспорядочный тип данных… Безусловно

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

Потому что они такие беспорядочные (простая задача: попробуйте создать программу, которая находит дату через 64 ​​дня после даты n без каких-либо внешних библиотек), с множеством сложностей - длина дат, високосные годы, sub -объекты, вложенные в родительские - при работе с объектами datetime вы должны знать эти 6 функций и методов.

Примечание: в этой статье обсуждается datetime в Python.

dateutil.parser.parse

Преобразование строк в даты является обычным делом - для доступа к свойствам объекта datetime строка, представляющая дату, должна быть преобразована в единицу. К сожалению, наборы данных или другие источники данных почти никогда не содержат datetime объектов, к которым можно легко получить доступ. Лучшей библиотекой для преобразования строк в даты является dateutil, которая может автоматически определять расположение дней, месяцев и лет, которые необходимо указать с другими библиотеками.

dateutil может принимать самые разные даты, где каждая из команд, по одной в каждой строке, автоматически определяет местоположение объектов и дает одинаковый результат (datetime.datetime(2040, 7, 3, 0, 0)):

Если человек может определить дату по строке, то dateutil сможет. Используя эту библиотеку, вы можете избежать надоедливого сопоставления даты и объекта, которое вам придется выполнять с помощью обычных методов преобразования даты и времени. Это особенно полезно, когда не все даты имеют один и тот же формат, как это часто бывает с реальными данными.

datetime.datetime.now ()

Для доступа к текущему времени используйте datetime.datetime.now(). Это возвращает объект datetime, возвращающий время в вашем регионе с точностью до микросекунды.

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

datetime.timedelta

Объект timedelta возвращается, когда вы обнаруживаете разницу между двумя объектами datetime. Например, чтобы вернуть разницу между 3 июля 1938 г. и 30 мая 2020 г., будет выполнен следующий код:

Простое использование оператора минус при взаимодействии между двумя объектами datetime создаст объект timedelta, который в этом случае сохраняется в переменной delta.

У объекта timedelta есть несколько атрибутов:

Вы даже можете добавлять объекты timedelta к обычным объектам datetime:

calendar.Calendar.itermonthdates ()

Calendar - это библиотека, построенная на основе datetime, и предоставляет удобные функции, связанные с календарем, помогая избежать необходимости вручную отслеживать високосные годы и количество дней в месяце. Чтобы получить доступ к итеративным функциям, сначала необходимо создать объект Calendar.

Параметр firstweekday установлен на 0, что означает понедельник, но также может быть установлен на 6 (воскресенье) или любой другой день между ними.

Рассмотрим .itermonthdates(), который занимает месяц и год и возвращает итератор, который содержит все даты в месяце, включая даты до и после, необходимые для завершения полной недели.

Результат выглядит так:

В календаре есть много других функций для возврата широкого спектра итераторов, а также другие функции, такие как печать HTML или текстовых календарей, доступ к которым можно получить на странице их документации здесь:



arrow.Arrow.humanize ()

Arrow - это библиотека Python, чей атрибут humanize() выделяется. Этот метод позволяет людям более легко взаимодействовать с объектами даты и интерпретировать их. Сначала необходимо создать объект Arrow (объекты datetime могут быть размещены и преобразованы в Arrow объекты).

Вызов time.humanize() даст строку с понятным для человека сообщением, описывающим, как давно было time с настоящего момента.

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

Делориан

Названный в честь Назад в будущее, Delorean в основном используется из-за удобного понимания естественного языка, что означает простоту навигации человека с манипуляциями с датой. Для начала создайте объект Delorean, который может вместить datetime объектов:

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

Это может обеспечить более простое и интуитивно понятное управление датами как для вас, так и для тех, кто читает ваш код.

Спасибо за прочтение!

Надеюсь, эти библиотеки и методы помогут вам в вашем стремлении управлять датой и временем!