Github: https://github.com/kennethreitz/maya
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()
vsmaya.parse()
)の両方を素晴らしいパースします。 - 輸入と輸出の両方(例えば1時間前)の人間のスラングのサポート。
- tzinfoを付けてもしなくても、Datetimesを非常に簡単に生成できます。
- このライブラリはエポックタイムをベースにしていますが、1970年1月1日より前の日付は実際には負の整数でサポートされています。
- マヤはパニックにならず、常にタオルを運びます。
†Delorean、Arrow、&Pendulumはどうですか?
これらのプロジェクトはすべて互いに補完関係にあり、友人です。 たとえば、振り子はMayaの解析に役立ちます。
たとえば、Arrowは素晴らしいライブラリですが、datetimeライブラリで欲しいものではありません。 多くの点で、特定のものについてはMayaよりも優れています。 いくつかの点で、私の意見では、そうではありません。
私は、タイムゾーン代数を扱うときに、今までやりたかったことのすべてに対して、私にとって理にかなったdatetimesのための純粋なAPIを望みます。 アローは私が必要とするすべてのことをするわけではありません(でもそれ以上です!)。 マヤは私が必要とするものを正確に行います。
私は、これらのプロジェクトが個人的にお互いを補完するものだと考えています。 Mayaはウェブサイトの解析やカレンダーイベントの処理に最適です!
May Mayaのインストール
$ pipenv install maya
☤それは好きですか?
ありがとう !