人类的约会时间。
maya的Python项目详细描述
在python中使用datetime非常令人沮丧,特别是在处理 在不同的系统上有不同的区域设置。这个库是为了制造 简单的事情容易得多同时承认时间是一种幻觉 (时区加倍)。
日期时间应该通过为人类编写的api进行交互。
maya主要是围绕着从网站解析datetime数据而构建的。
艺术由Sam Flores(照片由Kenneth Reitz)。
如果你对资助Kenneth Reitz开源感兴趣,可以考虑visiting this link。您的支持对激励的可持续性有很大帮助,因为开源不再是我日常工作的一部分。
玛雅的基本用法
看,人类的约会时间!
>>> 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.day7 >>> rand_day.add(days=10).day17 # Always. >>> rand_day.timezoneUTC # 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还包含一个非常强大的MayaInterval类,它表示一个时间范围(例如事件)。有了这个类,您就可以巧妙而轻松地执行大量高级日历计算。
例如:
>>> frommayaimportMayaInterval # 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())。
- 支持人类俚语,包括导入和导出(例如一小时前)。
- 无论是否附加TZINFO,都可以很容易地生成日期时间。
- 这个库是以历元时间为基础的,但是1970年1月1日之前的日期确实是通过负整数支持的。
- 玛雅从不惊慌,总是拿着毛巾。
那德洛林、阿罗和钟摆呢?
所有这些项目相辅相成,是朋友。例如,钟摆有助于增强maya的解析能力。
例如,arrow是一个很棒的库,但不是我想要的datetime库。在很多方面,它比玛雅更好。在某些方面,在我看来,不是。
我只是想要一个对日期时间有意义的api,它对我想做的所有事情都有意义,特别是在处理时区代数时。Arrow没有做我需要的所有事情(但它做的更多!)玛雅做的正是我需要的。
我个人认为这些项目是相辅相成的。玛雅是伟大的解析网站,并处理日历事件!
喜欢吗?
如何贡献
- 检查打开的问题或打开一个新的问题,开始围绕功能想法或错误的讨论。
- 在github上分叉the repository,开始对master分支(或其分支)进行更改。
- 编写一个测试,显示错误已修复或功能按预期工作。
- 发送一个pull请求并对维护程序进行bug操作,直到它被合并并发布。:)确保将自己添加到AUTHORS。