自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Bang!這個(gè)Python處理時(shí)間的庫,我拆解了!

開發(fā) 后端
Python里面處理時(shí)間庫的有很多,其中大家經(jīng)常用的有datetime。但是對(duì)于懶人來說還是很不爽,有么有更簡(jiǎn)單的,可以把我們的需求比如的白話文本轉(zhuǎn)為字符串的時(shí)間庫呢,今天小編在GitHub找到了這個(gè)好玩的庫,一起來看一下。

 [[338438]]

Python里面處理時(shí)間庫的有很多,其中大家經(jīng)常用的有datetime。但是對(duì)于懶人來說還是很不爽,有么有更簡(jiǎn)單的,可以把我們的需求比如的白話文本轉(zhuǎn)為字符串的時(shí)間庫呢,今天小編在GitHub找到了這個(gè)好玩的庫,一起來看一下。

 

這個(gè)庫的目標(biāo)就是通過簡(jiǎn)單的字符串就可以操作datatime,算是在datatime上面再次做了一層封裝,有點(diǎn)意思啊,我們一起來一探究竟。

安裝一下:

pytime的安裝很簡(jiǎn)單,直接用pip3 install pytime即可。

如何使用:

1).簡(jiǎn)單的獲取當(dāng)前的月,周,日的時(shí)間,以及上周,上月的時(shí)間

 

看一下輸出的結(jié)果:

today:2020-08-16

this week:(datetime.date(2020, 8, 10), datetime.date(2020, 8, 17))

last week:(datetime.date(2020, 8, 3), datetime.date(2020, 8, 11))

this_month:(datetime.date(2020, 8, 1), datetime.date(2020, 9, 1))

日期的范圍其實(shí)就是一個(gè)tuple類型的datatime起始-結(jié)束的日期范圍。

2).直接輸出節(jié)日日期

比如常見的圣誕節(jié),情人節(jié)啊,新年,母親節(jié),父親節(jié)之類的節(jié)日

 

拆解源碼

看起來是作者做了一層固定節(jié)日的封裝,我們來看一下源碼,一探究竟,看看源碼里面都封裝了那些節(jié)日:

 

源碼里面可以清晰的看到作者是如何構(gòu)造的這個(gè)節(jié)日,其實(shí)就是進(jìn)行了一些簡(jiǎn)單的運(yùn)算,但是代碼寫的還是非常工整的。

3).識(shí)別文本字符串-得到日期

這個(gè)動(dòng)態(tài)的識(shí)別文本,然后計(jì)算時(shí)間,應(yīng)該是這個(gè)庫最吸引人的地方,畢竟上面的日期,節(jié)假日其中你自己也可以封裝的。但是識(shí)別文本就有點(diǎn)意思了:

 

上面兩個(gè)函數(shù),分別計(jì)算某一個(gè)日期前多少多少天,和某一個(gè)日期的后多少多少天,能自動(dòng)的識(shí)別這一段字符串比如

2years 3mon 23week 3d 2hr

或者是沒有空格連在一起寫也可以

2years3mon23week3d2hr

拆解源碼:

非常給力,小編也非常好奇它是怎么做到的,于是我扒開了這段源碼看了一些:

 

原來before這個(gè)函數(shù)的接口有兩個(gè)參數(shù),一個(gè)就是base,一個(gè)是diff,base把時(shí)間字符串轉(zhuǎn)為datetime類型,然后diff會(huì)用一個(gè)dp(diff)進(jìn)行封裝,然后解析這個(gè)一長(zhǎng)串的字符串,順藤摸瓜,我們一起來看一下這dp(diff)干了啥事情:

dp = BaseParser.parse_diff

dp其實(shí)是一個(gè)BaseParse這個(gè)解析器的一個(gè)接口函數(shù),也就是說所以的字符串的解析都在這個(gè)parse_diff里面:

 

果然這個(gè)函數(shù)里面就是專門來處理我們輸入的"2years 3mon 23week 3d 2hr",作者做了很多封裝的處理,就是為了我們使用的時(shí)候更智能一些。

通過一層一層的拆解,你會(huì)發(fā)現(xiàn)整個(gè)作者在設(shè)計(jì)這個(gè)庫的思路和一些技巧點(diǎn),這樣的過程經(jīng)常練習(xí),對(duì)你提高Python功力大有裨益,有興趣的小伙伴也可以試試這個(gè)庫,代碼動(dòng)起來。

 

責(zé)任編輯:華軒 來源: 菜鳥學(xué)Python
相關(guān)推薦

2022-10-20 18:43:32

C語言golang安全

2014-08-22 13:27:59

物聯(lián)網(wǎng)

2017-05-31 14:25:14

戴爾數(shù)字經(jīng)濟(jì)轉(zhuǎn)型

2019-12-26 09:15:44

網(wǎng)絡(luò)IOLinux

2021-11-26 07:02:37

數(shù)據(jù)庫

2020-08-31 16:36:36

Redis架構(gòu)節(jié)點(diǎn)

2022-08-05 13:03:09

Python依賴管理代碼

2019-04-30 15:10:42

Python調(diào)試工具編程語言

2022-10-24 08:45:23

數(shù)據(jù)庫應(yīng)用場(chǎng)景區(qū)塊鏈

2017-11-07 13:24:38

Pythontime模塊datetime

2020-08-11 10:40:31

裝飾者模式Java組件

2022-05-03 00:03:11

狀態(tài)管理前端開發(fā)

2011-05-26 13:36:40

Oracle數(shù)據(jù)庫時(shí)間處理

2022-02-21 07:45:29

面向?qū)ο?/a>代碼依賴倒置

2024-04-15 16:17:29

Python代碼

2022-01-03 20:13:08

Gointerface 面試

2016-04-28 09:36:44

人才教育/華三

2022-11-12 17:36:51

Web前端開源

2020-07-20 07:48:53

單例模式

2017-12-07 11:27:30

編程開發(fā)代碼
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)