为人类设计的日期时间。
项目描述
在Python中处理日期时间非常令人沮丧,尤其是在处理不同系统上的不同区域时。这个库的存在是为了使简单的事情变得更容易,同时承认时间是一个错觉(时区更是如此)。
应该通过为人类编写的API与日期时间交互。
Maya主要围绕从网站解析日期时间数据的头痛和使用案例构建。
艺术作品由Sam Flores创作(照片由Kenneth Reitz拍摄)。
如果您想为Kenneth Reitz的开源项目提供财务支持,请考虑访问此链接 (点击访问)。您的支持对保持我的动力至关重要,因为开源项目不再是我的日常工作的一部分。
☤ Maya 的基本用法
看吧,这是人类可读的日期和时间!
>>> 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
>>> m = maya.MayaDT(time.time())
>>> 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() 与 maya.parse())。
支持人类俚语,无论是导入还是导出(例如 一个小时前)。
可以非常轻松地生成日期时间,无论是带时区信息还是不带。
这个库基于纪元时间,但确实支持 1970 年 1 月 1 日之前的日期,通过使用负整数。
Maya 从不惊慌,并且总是带着毛巾。
☤ 关于 Delorean、Arrow 和 Pendulum 呢?
所有这些项目都是互补的,并且是朋友。例如,Pendulum 帮助为 Maya 的解析提供动力。
例如,Arrow 是一个很棒的库,但它并不是我想要的日期时间库。在许多方面,它在某些方面比 Maya 更好。在某些方面,在我看来,它并不好。
我仅仅想要一个合理的 API,用于处理日期时间,对于我想要做的所有事情来说都是有意义的——特别是在处理时区代数时。Arrow 并没有做我所需要做的所有事情(但它做了很多!)Maya 确切地做了我所需要的事情。
我认为这些项目是相互补充的。Maya 非常适合解析网站和处理日历事件!
☤ 安装 Maya
安装简单,使用 pipenv
$ pipenv install maya
✨🍰✨
☤ 你喜欢吗?
说谢谢!
如何贡献
项目详情
下载文件
下载您平台对应的文件。如果您不确定该选择哪个,请了解有关安装包的更多信息。
源代码发行版
构建发行版
maya-0.6.1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7f53e06d5a123613dce7c270cbc647643a6942590dba7a19ec36194d0338c3f4 |
|
MD5 | 7f91fea8c17317957843699777026856 |
|
BLAKE2b-256 | 4e90e0e298b495164475331cc3fda906c640c9098a49fc933172fe5826393185 |
maya-0.6.1-py2.py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | fa90d8c6c9a730a7f740dec6e1c7d3da8ca10159e40bb843e4e72772f5e3a9a3 |
|
MD5 | d19c4050a3df41550643634442c55e08 |
|
BLAKE2b-256 | 1d56789ebf410acc1491bf4078ef57a7a277b42c0b18f43e17007bfb6c1caaf3 |