GitHubじゃ!Pythonじゃ!

GitHubからPython関係の優良リポジトリを探したかったのじゃー、でも英語は出来ないから日本語で読むのじゃー、英語社会世知辛いのじゃー

kennethreitz

maya – Humans™のためのDatetimes

投稿日:

Humans™のためのDatetimes

Maya:Datetimes for Humans™

Datetimesは、Pythonで作業するのに非常に不満です。特に、異なるシステム上の異なるロケールを扱う場合 このライブラリは、時間が幻想であることを認めながら、簡単なことをもっと簡単にするために存在します(タイムゾーンは二倍です)。

Datetimesは、人間のために書かれたAPIを介して相互作用する必要があります。

Mayaは主に、ウェブサイトからの日時データを解析するための頭痛やユースケースを中心に構築されています。

May Mayaの基本的な使い方

見て、人間のためのdatetimes!

>>> now = maya.now()
<MayaDT epoch=1481850660.9>

>>> tomorrow = maya.when('tomorrow')
<MayaDT epoch=1481919067.23>

>>> tomorrow.slang_date()
'tomorrow'

>>> tomorrow.slang_time()
'23 hours from now'

# Also: MayaDT.from_iso8601(...)
>>> tomorrow.iso8601()
'2017-02-10T22:17:01.445418Z'

# Also: MayaDT.from_rfc2822(...)
>>> tomorrow.rfc2822()
'Fri, 10 Feb 2017 22:17:01 GMT'

# Also: MayaDT.from_rfc3339(...)
>>> tomorrow.rfc3339()
'2017-02-10T22:17:01.44Z'

>>> tomorrow.datetime()
datetime.datetime(2016, 12, 16, 15, 11, 30, 263350, tzinfo=<UTC>)

# Automatically parse datetime strings and generate naive datetimes.
>>> scraped = '2016-12-16 18:23:45.423992+00:00'
>>> maya.parse(scraped).datetime(to_timezone='US/Eastern', naive=True)
datetime.datetime(2016, 12, 16, 13, 23, 45, 423992)

>>> rand_day = maya.when('2011-02-07', timezone='US/Eastern')
<MayaDT epoch=1297036800.0>

# Maya speaks Python.
>>> m = maya.MayaDT.from_datetime(datetime.utcnow())
>>> print(m)
Wed, 20 Sep 2017 17:24:32 GMT

>>> m = maya.MayaDT.from_struct(time.gmtime())
>>> print(m)
Wed, 20 Sep 2017 17:24:32 GMT

>>> rand_day.day
7

>>> rand_day.add(days=10).day
17

# Always.
>>> rand_day.timezone
UTC

# Range of hours in a day:
>>> maya.intervals(start=maya.now(), end=maya.now().add(days=1), interval=60*60)
<generator object intervals at 0x105ba5820>

# snap modifiers
>>> dt = maya.when('Mon, 21 Feb 1994 21:21:42 GMT')
>>> dt.snap('@d+3h').rfc2822()
'Mon, 21 Feb 1994 03:00:00 GMT'

☤Mayaの高度な使用法

タイムスタンプに加えて、Mayaには、時間の範囲(イベントなど)を表すすばらしいパワフルなMayaIntervalクラスも含まれています。 このクラスを使用すると、高度なカレンダー計算をさまざまな方法で簡単に実行できます。

例えば:

>>> from maya import MayaInterval

# Create an event that is one hour long, starting now.
>>> event_start = maya.now()
>>> event_end = event_start.add(hours=1)

>>> event = MayaInterval(start=event_start, end=event_end)

ここから、いくつかの方法があります。この方法を使用して、このイベントを別のイベントと比較することができます。

☤これはなぜ有用ですか?

  • すべてのタイムゾーン代数は、システムのロケールに関係なく、すべてのマシンで同じように動作します。
  • ISO 8601とRFC 2822の日時スタンプの両方を完全に対称的にインポート/エクスポートできます。
  • 人間と機械のために書かれた日付( maya.when() vs maya.parse() )の両方を素晴らしいパースします。
  • 輸入と輸出の両方(例えば1時間前)の人間のスラングのサポート。
  • tzinfoを付けてもしなくても、Datetimesを非常に簡単に生成できます。
  • このライブラリはエポックタイムをベースにしていますが、1970年1月1日より前の日付は実際には負の整数でサポートされています。
  • マヤはパニックにならず、常にタオルを運びます。

†Delorean、Arrow、&Pendulumはどうですか?

これらのプロジェクトはすべて互いに補完関係にあり、友人です。 たとえば、振り子はMayaの解析に役立ちます。

たとえば、Arrowは素晴らしいライブラリですが、datetimeライブラリで欲しいものではありません。 多くの点で、特定のものについてはMayaよりも優れています。 いくつかの点で、私の意見では、そうではありません。

私は、タイムゾーン代数を扱うときに、今までやりたかったことのすべてに対して、私にとって理にかなったdatetimesのための純粋なAPIを望みます。 アローは私が必要とするすべてのことをするわけではありません(でもそれ以上です!)。 マヤは私が必要とするものを正確に行います。

私は、これらのプロジェクトが個人的にお互いを補完するものだと考えています。 Mayaはウェブサイトの解析やカレンダーイベントの処理に最適です!

May Mayaのインストール

pipenvで簡単にインストールできます

$ pipenv install maya

🍰

☤それは好きですか?

ありがとう

寄付する方法

  1. 未解決の問題がないかチェックするか、新しく問題を開いて、機能のアイデアやバグに関する議論を開始してください。
  2. GitHub のリポジトリをフォークて、 マスターブランチ(またはブランチからブランチ)への変更を開始します。
  3. バグが修正されたか、または機能が期待どおりに機能することを示すテストを作成します。
  4. プルリクエストを送信し、マージンが発行されて公開されるまでメンテナをバグしてください。 🙂 著者に自分自身を追加してください。







-kennethreitz
-, , , , , , , ,

執筆者: