每天一個Python小技巧(4)

大家好,我是米洛,一個想和大家一起分享測試開發(fā)相關(guān)的技術(shù),面試經(jīng)驗和成長經(jīng)歷的博主!

歡迎大家關(guān)注我的龔仲耗: 測試開發(fā)坑貨。


很多人都用過datetime庫,也能很順利地寫出datetime.now()和對應(yīng)的格式化代碼:

from datetime import datetime
print(datetime.now())
print(datetime.strftime("%Y-%m-%d %H:%M:%S"))

但其實datetime還有一些你可能不知道的用法。

故事

在我們做數(shù)據(jù)統(tǒng)計的時候,會遇到這樣的場景。比如獲取本月至今的測試用例執(zhí)行次數(shù),我們需要獲取到類似2021-07-01 00:00:00的字符串。

或者這么說,我曾經(jīng)出過這樣一道筆試題:

獲取當(dāng)月的第一天的日期字符串,如果今天是2021年4月10日,那么輸出"2021-04-01 00:00:00"。

先想一下,如果是你,你會怎么做?雖然我不知道大家是否都能掌握對應(yīng)的技巧,我還是盡自己的力量寫出最可能的解法。

  • 解法一(尷尬型)
from datetime import datetime
result = datetime.now().strftime("%Y-%m-%d")
day = result.split(" ")[0].split("-")[2]
result = result.replace(day, "01") + " 00:00:00"
print(result)

這種解法是從字符串的角度出發(fā),去解決問題,比較憨厚,是我最初的模樣。

  • 解法二
from datetime import datetime
now = datetime.now()
now = now.replace(now.year, now.month, 1, 0, 0, 0)
result = now.strftime("%Y-%m-%d %H:%M:%S")
print(result)

時間是可以設(shè)置的,我這里把day設(shè)置為1,時分秒設(shè)置為0,再格式化就成功了。

  • 解法三

    但其實,因為不確定大家知不道,所以壓軸出場了,日期格式化的時候是可以指定的。

from datetime import datetime
print(datetime.now().strftime("%Y-%m-01 00:00:00"))
image

其實datetime還有很多玩法,我們?nèi)绻僮魅掌诘脑?code>盡量不要使用字符串,我們要用datetime類的相關(guān)方法,簡單方便快捷。

進階

如果要操作時間加減,比如我要獲取30天后的今天,或者算出距離高考已經(jīng)過去多久了,都可以用datetime來解決。

假如我是6.1入職的公司,我想看看我來了多久了,我可以這么寫:

from datetime import timedelta, datetime
come = datetime.strptime("2021-06-01", "%Y-%m-%d")
# 計算日期差, 獲取入職后的天數(shù)
days = (datetime.now() - come).days
print(days)
# 計算3個月后的時間,算出轉(zhuǎn)正日期
engineer = come + timedelta(days=90)
print(engineer.strftime("%Y-%m-%d")) 

可以看到datetime是可以做加減法的,加減后的對象是timedelta對象,這也是我之前強調(diào)不要用字符串操作的原因。

小調(diào)查

如果覺得技巧有用,學(xué)到了的話,請麻煩點個贊吧,贊多我就繼續(xù)更新,贊少我就不更新類似的。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 大家好,這里是米洛,一個想和大家一起分享測試開發(fā)相關(guān)的技術(shù),面試經(jīng)驗和成長經(jīng)歷的博主! 歡迎大家關(guān)注我的攻仲耗: ...
    米洛丶閱讀 193評論 0 0
  • datetime是Python處理日期和時間的標(biāo)準(zhǔn)庫。 獲取當(dāng)前日期和時間 我們先看如何獲取當(dāng)前日期和時間: >>...
    jbb_43b0閱讀 1,183評論 0 0
  • 幾乎所有的正式代碼中,我們都需要與時間打交道。在Python中,與時間處理有關(guān)的模塊包括time,datetime...
    yongxinz閱讀 1,078評論 1 5
  • Python常用模塊 一、時間處理模塊 1. time.time() time time() 返回當(dāng)前時間的時間戳...
    code與有榮焉閱讀 316評論 0 6
  • 我們可以通過學(xué)習(xí)在Python中對日期時間的處理,可以在快速的完成工作,比如: 將日期時間作為日志信息的內(nèi)容輸入 ...

友情鏈接更多精彩內(nèi)容