通過6個實例,教你使用datetime資料庫做日期和時間的管理和轉換

2022年12月03日15:33:04 熱門 1843

在日常工作中基本每天都會與時間類型打交道,比如資料庫每條數據的創建時間,更新的時候需要寫入的更新時間,那麼問題來了,如下:

它是要 UTC Time(世界統一時間)還是要本地時間?

日期的格式要怎麼格式化?

我如果得到的是一個時間戳,我該怎麼轉成目標時間?

我如果想把資料庫的時間轉成時間戳我該怎麼處理?

等等等等

通過6個實例,教你使用datetime資料庫做日期和時間的管理和轉換 - 天天要聞

上面說的這些,不複雜,但是你不能不知道,如果連這類的基礎在用到的時候都需要去檢索,那麼就不用談效率了。

下面,咱們通過幾個實例,一起來看一下使用 datetime 這個庫做日期和時間的管理和轉換。

實例 1:獲取當前時間

import time

from datetime import datetime

now = datetime.now()

print(f'當前時間: {now}')

print(f'當前時間拆分: {now.year, now.month, now.day}')

strf_now = datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')

print(f'格式化當前時間: {strf_now}')

strf_now_1 = datetime.strftime(datetime.now(), '%Y-%m-%d %H:%M:%S')

print(f'格式化當前時間-1: {strf_now_1}')

<OUTPUT>

當前時間: datetime.datetime(2020, 12, 13, 16, 5, 57, 448449)

當前時間拆分: (2020, 12, 13)

格式化當前時間: '2020-12-13 16:05:57.448602'

格式化當前時間-1: '2020-12-13 16:05:57'

對上述代碼進行解釋:

now 中的 datetime.now() 用來獲取當前的時間,返回的數據為 datetime 類型;.year .mongo .day 分別用來獲取年、月、日;

strf_now 中 strftime 用來格式化 datetime 類型的數據;格式化之後,返回的是 str 類型的數據;

strf_now_1 中演示了使用 strftime 格式化的另一種方法,返回的結果和數據類型與 strf_now 一樣,這裡用偽代碼寫一下上面說的兩種方法

{datetime 類型對象}.strftime( {格式符組} )

datetime.strftime( {datetime 類型對象}, {格式符組} )

strftime 的格式符已經在文末整理好了,可以保存下來,用到的時候方便查閱。

實例 2:獲取當前的UTC時間

from datetime import timedelta

utc_now = datetime.utcnow()

print(f'UTC 當前時間: {utc_now}')

utc2local = utc_now + timedelta(hours=8)

print(f'當地當前時間: {utc2local}')

<OUTPUT>

UTC 當前時間: datetime.datetime(2021, 9, 8, 12, 13, 31, 472850)

當地當前時間: datetime.datetime(2021, 9, 8, 20, 13, 31, 472850)

對上述代碼進行解釋:

datetime.utcnow() 用來獲取 UTC (全球統一)時間,返回的數據類型為 datetime 類型;

utc2local 完成的是 UTC 時間轉當前時間的過程(科普:UTC 時間轉當前實際上做的只是在原有時間基礎上加 8 小時);

其中的 timedelta 會在「實例 3」中講解,它的作用是可以在當前時間的基礎上增加或者減少一定的時間。

通過6個實例,教你使用datetime資料庫做日期和時間的管理和轉換 - 天天要聞

實例 3:獲取一個時間之前或者之後一段時間後的時間,使用timedelta可以很方便地實現

from datetime import timedelta

delta_now = datetime.now() + timedelta(days=1)

print(f'delta_now: {delta_now}')

<OUTPUT>

delta_now: datetime.datetime(2021, 9, 8, 20, 54, 45, 479097)

對上述代碼進行解釋:

首先需要注意,與 timedelta 相加的,須為 datetime 類型;

timedelta(days=1) 返回 datetime 類型,相加後,也返回 datetime 類型;

delta_now 表示在現在的基礎上,加上一天返回;

timedelta 還支持很多參數,如下,如果多個傳入,請注意順序datetime.timedelta(days=0,seconds=0,microseconds=0,milliseconds=0,minutes=0,hours=0,weeks=0)

timedelta 的值支持負數,例如 days=-1,表示減掉一天。

通過6個實例,教你使用datetime資料庫做日期和時間的管理和轉換 - 天天要聞

實例 4:字元串時間轉時間戳

import time

def time2stamp(t):

time_array = time.strptime(t, '%Y-%m-%d %H:%M:%S')

print(type(time_array), '->', time_array)

timestamp = time.mktime(time_array)

return timestamp

if __name__ == '__main__':

print('->', time2stamp('2020-12-10 23:34:30'))

<OUTPUT>

<class 'time.struct_time'> -> time.struct_time(tm_year=2020, tm_mon=12, tm_mday=10, tm_hour=23, tm_min=34, tm_sec=30, tm_wday=3, tm_yday=345, tm_isdst=-1)

-> 1607614470.0

對上述代碼進行解釋:

time.strptime() 函數根據指定的格式把一個時間字元串解析為時間元組,供後續使用;

time.mktime() 接收結構化之後的時間對象作為參數(上面的 time.strptime() 的返回值),返回用秒數來表示時間的浮點數;

實例 5:當前時間轉時間戳

import time

form datetime import datetime

def get_now_stamp():

now_time = datetime.now()

return time.mktime(now_time.timetuple())

if __name__ == '__main__':

print('->', get_now_stamp())

<OUTPUT>

-> 1607848078.0

實例 5 不多說,實例 4 搞明白了,理解實例 5 自然不成問題。

實例 6:時間戳轉時間

from datetime import datetime

def stamp2time(timestamp):

return datetime.fromtimestamp(timestamp)

if __name__ == '__main__':

print('->', stamp2time(1607614470))

<OUTPUT>

-> datetime.datetime(2020, 12, 10, 23, 34, 30)

對上述代碼解釋:

datetime.fromtimestamp() 時間戳(int 型)轉換為 datetime 類型時間;

以上的方法,建議大家根據自己的需要,封裝成工具類,其中實例 4、5、6 是封裝好的現成的方法,可以直接使用;這樣在使用的時候可以很方便的調用;

當然工具類可以往裡面補充很多常用函數,有了這個利器,你開發的效率也會逐漸地快起來。

下面是 strftime 格式符,請笑納。

通過6個實例,教你使用datetime資料庫做日期和時間的管理和轉換 - 天天要聞

**文末福利——推薦一個《Python自動化測試學習交流群》給大家:

請關注+私信回復:"頭條" 就可以免費拿到軟體測試學習資料,同時進入群學習交流~~

通過6個實例,教你使用datetime資料庫做日期和時間的管理和轉換 - 天天要聞

熱門分類資訊推薦

曾小賢的上司Lisa榕,現實中不僅才貌雙全,還嫁給了CEO - 天天要聞

曾小賢的上司Lisa榕,現實中不僅才貌雙全,還嫁給了CEO

曾小賢的上司Lisa榕,現實中不僅才貌雙全,還嫁給了CEO雖然說《愛情公寓》這部劇在劇情上充滿了爭議,但是一定程度上,這部劇也是很多人的回憶,是伴隨了一代人的青春回憶,而且劇中的很多角色都成為了經典,他們的口頭禪也一直被拿來玩兒梗。
Lisa榕做主持多年沒紅,被陳赫拉進愛情公寓爆紅,如今怎樣了 - 天天要聞

Lisa榕做主持多年沒紅,被陳赫拉進愛情公寓爆紅,如今怎樣了

談到《愛情公寓》這部火爆一時的歡樂喜劇,大家肯定都不陌生。不知道大家是否還記得《愛情公寓》中那個把曾小賢治得服服帖帖的女上司Lisa榕,現實中的她名叫榕榕,和劇中的形象也判若兩人。1981年出生在遼寧瀋陽的榕榕,畢業於上海戲劇學院,後來成為了上海東方傳媒集團有限公司的一名主持人。