在日常開發的時候,我們經常會遇到時間處理的問題,代碼示例爬蟲過來的時間處理,代碼示例對庫內的數據進行時間維度的統計等。雖然是個很簡單的東西,但每次用的時候都難免要再查一查,其實這就是基礎不夯實的表現。趁著今天有空,總結一下開發過程中,最最最常見的日期時間格式和操作

常見日期時間類型

類型格式示例

日期時間對象的格式

  • 對象格式(即struct_time對象格式)

  • 字元串格式:

  • 浮點數格式:

常見操作

我們一觀察便知,其實struct_time對象和浮點數格式,都不是面向人類友好的格式,一般我們會將它們往字元串形式轉換

格式轉換:

  • 將struct_time轉換成字元串形式

  • 將浮點數格式轉換成字元串形式 因為時間戳僅包含當前時間數據,不包括日期數據,因此我們要借用datetime實現這一轉換

時間運算:

時間計算無非是比較差值。照理說比較差值比較簡單,無非是加減演算法,但因為格式不一樣,就增加了很多不必要的麻煩。當然前人已經幫我們踩了很多的坑,代碼示例我們官方的datetime包,就對此做了很好的支持,我們要轉換成統一的格式,就只需要將調用datetime下的strptime即可

值得一提的是datetime中的timedelta函數,可以很方便的計算日期時間,代碼示例我們一直現在的日期,想要知道一周後的日期,就可以通過它來實現

第三方乾貨庫

雖然官方給出的兩個庫已經滿足了大部分的需求,但隨著時間的推移,業務需求越來越複雜,官方的庫,可能無法滿足我們的項目需求。這時候就需要引入一些第三方庫了,常見的有Maya、Arrow和Dateutil,一般我用Arrow就已經足夠了,另外兩個功能大同小異,有興趣的朋友可以自己探索

我們經常因為業務的需要統計月度,季度或者年度的指標數據,這個時候用arrwo就非常方便了,他裡面有三個重要的函數,第一個是floor,表示頭部,第二個是tail,表示尾部,我們用它們可以很方便地得到日、周、月、季度、年度的開始和結尾;另外一個是shift,它則可以更加靈活地以日、周、月、季、年為單位得獲取時間

其他有趣補充

在探索日期時間的功能時,我發現有timedelta欄位,覺得這個命名很有趣,於是查了下這個的delta,直譯過來是三角洲的意思,一查維基是:

Delta(大寫Δ,小寫δ,中文音譯:德爾塔、德耳塔)

Delta 是三角洲的英文,源自三角洲的形狀像三角形,如同大寫的「Δ」

發現非常有趣,原來命名是跟著人的感覺走的

小結

  1. 在學習的時候對自己不懂得東西,要花時間歸納總結,尤其是那些每次遇到都會卡殼的小問題,雖然每次花時間不多,但積累起來就浪費了大量的時間
  2. 學習的過程中,可以對自己的好奇部分,花一點時間探索,有時候可能會收穫意想不到的驚喜,代碼示例這次的delta命名。但要注意時間的控制

參考資料

Converting Strings to datetime in Python

time date datetme timestamp 傻傻分不清楚

python 獲取當年、季度、月、日的開始和結束時間

Δ

掃 碼 查 看 更 多 好 玩

推薦閱讀:

相关文章