python:maya 一個人性化的時間處理庫


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM