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

Еще одна замена Python DateTime: маятник

Получите практические, реальные навыки Python на наших ресурсах и пути

Автор оригинала: Mike Driscoll.

Я наткнулся на еще одну новую библиотеку, которая предполагает, что это лучше, чем модуль DateTime Python. Это называется Маятник Отказ Маятник сильно зависит от Углерод для PHP в соответствии с его документацией.

Эти библиотеки всегда интересны, хотя я не уверен, что делает это лучше, чем стрелка или Delorean. Были некоторые комментарии на Reddit Между создателем маятника, где он заявил, что он нашел стрелку, чтобы ведить себя странно в определенных обстоятельствах.

Несмотря на это, эта статья не о сравнении этих конкурирующих библиотек. Это просто взглянуть на то, как работает маятник. Одним из основных целей для этих различных библиотек является создание модуля DATETIME с более «Pythonic» API и тем, который знает часовой пояс.

Давайте установим его, чтобы мы могли проверить это:

pip install pendulum

Если вам не нравится устанавливать его непосредственно в основную установку Python, не стесняйтесь установить его в виртуальне. Независимо от того, где вы устанавливаете его, вы увидите, что он установит пару зависимостей, таких как Tzlocal, Python-Translate, Codegen и Polib.

Теперь, когда он установлен, давайте откроем интерпретатор Python и попробовать:

>>> import pendulum
>>> pendulum.now('Japan')

>>> pendulum.now()


Здесь мы снимаем текущее время для моего местоположения, а затем просим текущее время в Японии. Вы отметите, что маятник автоматически обнаруживает ваш часовой пояс. Как вы можете ожидать, вы также можете создать объект типа DateTime с даты:

>>> from pendulum import Pendulum
>>> Pendulum.create_from_date(2016, 7, 8, 'US/Eastern')

>>> Pendulum.create_from_date(2016, 7, 8, 'US/Central')

>>> Pendulum.create_from_date(2016, 7, 8, 'US/Mountain')

Этот пример демонстрирует, как вы можете получить различные объекты, похожие на DateTime, указав разные часовые зоны. Однако одна из вещей, которые мне нравятся о маятнике, так это то, как он рассчитывает даты на основе периодов времени:

>>> today = pendulum.now()
>>> today

>>> tomorrow = pendulum.now().add(days=1)
>>> tomorrow

>>> last_week = pendulum.now().subtract(weeks=1)
>>> last_week

Я нашел способ, которым он добавляет и вычитает периоды времени, чтобы быть совершенно интуитивным. Маятник также имеет интересную концепцию интервалов:

>>> interval = pendulum.interval(days=365)
>>> interval.weeks
52
>>> interval.years
1
>>> interval.days
365
>>> interval.for_humans

>>> interval.for_humans()
'52 weeks 1 day'

Здесь мы создаем интервал 365 дней. Мы можем попросить его различные части информации об этом промежутке времени, например, сколько дней, недель и лет он содержит. Еще одна веселая вещь, которую вы можете сделать, это создать dateTime, а затем спросить его для других дат, связанные с созданной датой:

>>> dt = pendulum.create(2012, 1, 31, 12, 0, 0)
>>> dt.start_of('decade')

>>> dt.start_of('century')

>>> dt

>>> dt.end_of('month')

>>> dt

В более ранней версии маятника эти звонки на самом деле будут изменять объект DT на месте. Это будет означать, что вместо 2012-1-31 года мой объект DT изменится на начало десятилетия, затем век и, наконец, в конечном итоге в конце месяца, который был бы 2001-01-30. Это было исправлено на момент написания, чтобы соответствовать тому, что вы видите выше.

Обертывание

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

Сопутствующие проекты

Статьи по теме

  • Python – Время с Dealorean
  • Стрелка – Новая дата/временное пакет для Python