Maya这个库的存在是为了让简单的事情变得更容易,特别是在处理不同系统上的不同地区时。
Maya主要用于围绕着从网站解析datetime数据。
Maya安装
C:\Users\lifeng>pip install maya
Collecting maya
Downloading maya-0.6.1-py2.py3-none-any.whl (12 kB)
Collecting snaptime
Downloading snaptime-0.2.4.tar.gz (2.9 kB)
Preparing metadata (setup.py) ... done
Collecting humanize
Downloading humanize-3.12.0-py3-none-any.whl (90 kB)
|████████████████████████████████| 90 kB 453 kB/s
Collecting pendulum>=2.0.2
Downloading pendulum-2.1.2-cp37-cp37m-win_amd64.whl (129 kB)
|████████████████████████████████| 129 kB 1.7 MB/s
Collecting tzlocal
Downloading tzlocal-4.1-py3-none-any.whl (19 kB)
Collecting dateparser>=0.7.0
Downloading dateparser-1.1.0-py2.py3-none-any.whl (288 kB)
|████████████████████████████████| 288 kB 3.3 MB/s
Requirement already satisfied: pytz in d:\python\python37\lib\site-packages (from maya) (2020.1)
Requirement already satisfied: regex!=2019.02.19,!=2021.8.27 in d:\python\python37\lib\site-packages (from dateparser>=0.7.0->maya) (2021.10.8)
Requirement already satisfied: python-dateutil in c:\users\lifeng01\appdata\roaming\python\python37\site-packages (from dateparser>=0.7.0->maya) (2.8.1)
Collecting pytzdata>=2020.1
Downloading pytzdata-2020.1-py2.py3-none-any.whl (489 kB)
|████████████████████████████████| 489 kB 3.3 MB/s
Requirement already satisfied: importlib-metadata in d:\python\python37\lib\site-packages (from humanize->maya) (1.7.0)
Requirement already satisfied: setuptools in d:\python\python37\lib\site-packages (from humanize->maya) (41.2.0)
Collecting tzdata
Downloading tzdata-2021.5-py2.py3-none-any.whl (339 kB)
|████████████████████████████████| 339 kB 3.3 MB/s
Collecting backports.zoneinfo
Downloading backports.zoneinfo-0.2.1-cp37-cp37m-win_amd64.whl (38 kB)
Collecting pytz-deprecation-shim
Downloading pytz_deprecation_shim-0.1.0.post0-py2.py3-none-any.whl (15 kB)
Requirement already satisfied: six>=1.5 in d:\python\python37\lib\site-packages (from python-dateutil->dateparser>=0.7.0->maya) (1.14.0)
Requirement already satisfied: zipp>=0.5 in d:\python\python37\lib\site-packages (from importlib-metadata->humanize->maya) (3.1.0)
Using legacy 'setup.py install' for snaptime, since package 'wheel' is not installed.
Installing collected packages: tzdata, backports.zoneinfo, pytz-deprecation-shim, tzlocal, pytzdata, snaptime, pendulum, humanize, dateparser, maya
Running setup.py install for snaptime ... done
Successfully installed backports.zoneinfo-0.2.1 dateparser-1.1.0 humanize-3.12.0 maya-0.6.1 pendulum-2.1.2 pytz-deprecation-shim-0.1.0.post0 pytzdata-2020.1 snaptime-0.2.4 tzdata-2021.5 tzlocal-4.1
Maya的基本用法
import time
import maya
from datetime import datetime
now = maya.now()
print(now)
# 运行结果》》:Tue, 02 Nov 2021 12:35:19 GMT
tomorrow = maya.when('tomorrow')
print(tomorrow)
# 运行结果》》:Wed, 03 Nov 2021 12:35:19 GMT
print(tomorrow.slang_date())
# 运行结果》》:tomorrow
print(tomorrow.slang_time())
# 运行结果》》:in 23 hours
print(tomorrow.iso8601())
# 运行结果》》:2021-11-03T12:37:08.061638Z
print(tomorrow.rfc2822())
# 运行结果》》:Wed, 03 Nov 2021 12:37:08 GMT
print(tomorrow.rfc3339())
# 运行结果》》:2021-11-03T12:37:08.0Z
print(tomorrow.datetime())
# 运行结果》》:2021-11-03 12:37:08.061638+00:00
""" 自动解析日期时间字符串并生成天真日期时间 """
scraped = '2016-12-16 18:23:45.423992+00:00'
date = maya.parse(scraped).datetime(to_timezone='US/Eastern', naive=True)
print(date)
rand_day = maya.when('2011-02-07', timezone='US/Eastern')
print(rand_day.day)
print(rand_day.add(days=10).day)
print(rand_day.timezone)
# 运行结果》》:2016-12-16 13:23:45.423992
# 运行结果》》:7
# 运行结果》》:17
# 运行结果》》:UTC
m = maya.MayaDT.from_datetime(datetime.utcnow())
print(m)
m = maya.MayaDT.from_struct(time.gmtime())
print(m)
m = maya.MayaDT(time.time())
print(m)
# 运行结果》》:Tue, 02 Nov 2021 12:42:51 GMT
# 运行结果》》:Tue, 02 Nov 2021 12:42:51 GMT
# 运行结果》》:Tue, 02 Nov 2021 12:42:51 GMT
""" 一天中的小时范围,返回的是生成器对象 """
hours = maya.intervals(start=maya.now(), end=maya.now().add(days=1), interval=60*60)
print(tuple(hours))
# 运行结果》》:(<MayaDT epoch=1635857109.5122175>, <MayaDT epoch=1635860709.512218>, <MayaDT epoch=1635864309.512218>, <MayaDT epoch=1635867909.512218>, <MayaDT epoch=1635871509.512218>, <MayaDT epoch=1635875109.512218>, <MayaDT epoch=1635878709.512218>, <MayaDT epoch=1635882309.512218>, <MayaDT epoch=1635885909.512218>, <MayaDT epoch=1635889509.512218>, <MayaDT epoch=1635893109.512218>, <MayaDT epoch=1635896709.512218>, <MayaDT epoch=1635900309.512218>, <MayaDT epoch=1635903909.512218>, <MayaDT epoch=1635907509.512218>, <MayaDT epoch=1635911109.512218>, <MayaDT epoch=1635914709.512218>, <MayaDT epoch=1635918309.512218>, <MayaDT epoch=1635921909.512218>, <MayaDT epoch=1635925509.512218>, <MayaDT epoch=1635929109.512218>, <MayaDT epoch=1635932709.512218>, <MayaDT epoch=1635936309.512218>, <MayaDT epoch=1635939909.512218>)
Maya的高级用法
除了时间戳,Maya还包括一个非常强大的MayaInterval类,它表示时间范围(例如一个事件)。使用这个类,您可以巧妙而轻松地执行大量高级日历计算。
举一个示例:
from maya import MayaInterval
event_start = maya.now()
event_end = event_start.add(hours=1)
event = MayaInterval(start=event_start, end=event_end)
以上总结或许能帮助到你,或许帮助不到你,但还是希望能帮助到你,如有疑问、歧义,直接私信留言会及时修正发布;非常期待你的点赞和分享哟,谢谢!
未完,待续…
一直都在努力,希望您也是!
微信搜索公众号:就用python