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

