溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何使用python時間處理庫sandglass

發(fā)布時間:2021-10-14 09:14:52 來源:億速云 閱讀:113 作者:柒染 欄目:編程語言

這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)如何使用python時間處理庫sandglass,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

在游戲開發(fā)的過程中頻繁的需要跟時間相關(guān)的做處理,而python內(nèi)置了好多個時間處理庫,datetime/date/time/calendar/timedelta等,細(xì)節(jié)繁多略具迷惑性。很多東西不夠便捷直接。
想一下下面這些場景:

  • 2014年六一兒童節(jié)那天的時間戳是多少?

  • 2014年六一兒童節(jié)那天是星期幾?

  • datetime對象轉(zhuǎn)成字符串后面往往帶小數(shù)點,即微秒,而我存到數(shù)據(jù)庫是不需要微秒的,怎么搞?

  • 從配置中讀取、網(wǎng)絡(luò)中傳輸、數(shù)據(jù)庫存儲獲取到的時間信息是字符串的,怎么轉(zhuǎn)成可以用于運算的對象?

  • 要知道最近7天的留存,怎么得到最近7天的日期?

  • 測試中經(jīng)常需要改系統(tǒng)時間,但是改系統(tǒng)時間這段時間內(nèi)如果做其它操作會受影響,比如修改文件會導(dǎo)致文件的時間受影響,提交代碼時間也亂套,怎么解決?

  • 這個月有幾天?

  • 去年的今天?昨日的這個時候?2小時后?

  • ...

遇到這些場景,用python內(nèi)置函數(shù)的話基本上都要對著官方文檔查,或者google或者stackoverflow一番。datetime、date、timestamp、時間字符串之間的互相轉(zhuǎn)換可夠頭痛的了, '%Y-%m-%d %H:%M:%S'之類的滿屏幕亂飄。
在這種情況下,sandglass庫誕生了,解脫了,主要函數(shù)就2個,ben()tslice()。庫的核心是Sandglass對象。其中Sandglass的意思是“沙漏”,ben是“大本鐘”。用python的基本都知道python的切片很靈活,tslice就是類似這樣的一個東西用來生產(chǎn)時間序列。
通過ben(),可以快速的通過各種時間信息獲得Sandglass對象,而通過Sandglass對象, 可以獲取各種信息和操作。
Sandglass對象相當(dāng)于一個中轉(zhuǎn)站,使得各種轉(zhuǎn)換變得簡單。這種理念有點類似轉(zhuǎn)碼,各種編碼->unicode->各種編碼。unicode就是中轉(zhuǎn)站。
好了,下面演示一下用sandglass庫怎么解決上面那些需求。

from sandglass import ben,tslice,Sandglass
#2014年六一兒童節(jié)那天的時間戳是多少?
ben('2014-06-01').timestamp
#2014年六一兒童節(jié)那天是星期幾?
ben('2014-06-01').isoweekday
#datetime對象轉(zhuǎn)成字符串后面往往帶小數(shù)點,即微秒,而我存到數(shù)據(jù)庫是不需要微秒的,怎么搞?
now = ben()
now.sql
#從配置中讀取、網(wǎng)絡(luò)中傳輸、數(shù)據(jù)庫存儲獲取到的時間信息是字符串的,怎么轉(zhuǎn)成可以用于運算的對象?
ben(1399387043.898),ben('2014-02-03'),ben('2014,2,3'),ben('2014/2/3'),ben('19:20:00')
#要知道最近7天的留存,怎么得到最近7天的日期?
tslice('day',start=None,end=None,step=-1,count=7)
#測試中經(jīng)常需要改系統(tǒng)時間,但是改系統(tǒng)時間這段時間內(nèi)如果做其它操作會受影響,比如修改文件會導(dǎo)致文件的時間受影響,提交代碼時間也亂套,怎么解決?
Sandglass.mock(day=1)#把當(dāng)前日期改成明天,所有ben()或者Sandglass.now()獲取的時間都受影響
#這個月有幾天?
ben().days_in_month
#去年的今天?昨日的這個時候?2小時后?
ben().shift(year=-1),ben().shift(day=-1),ben().shift(hour=2)

上述就是小編為大家分享的如何使用python時間處理庫sandglass了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI