首頁 > 軟體

python datetime 和時間戳互相轉換問題

2022-11-09 14:01:59

python datetime 和時間戳互轉

import datetime, time

now = datetime.datetime.now()

now_time = int(time.mktime(now.timetuple()))   #datetime 轉時間戳

now = datetime.datetime.fromtimestamp(now_time)  #時間戳轉datetime
# datetime 當天8點

datetime(now.year, now.month, now.day, 8)
now = 0點-8點  int(now-now % 86400) + time.timezone是前一天的零點

Python time和datetime時間戳和時間字串相互轉換

Python time和datetime時間戳和時間字串相互轉換
時間戳是指格林威治時間1970年01月01日00時00分00秒開始計算所經過的秒數,是一個浮點數。

time和datetime都是Python中的內建模組(不需要安裝,直接可以使用),都可以對時間進行獲取,對時間格式進行轉換,如時間戳和時間字串的相互轉換。

現在我們就使用這兩個模組來對時間格式進行轉換。

一、time獲取當前時間

import time
print(time.time())
print(time.localtime())
print(time.localtime(time.time()))

執行結果:

1559120608.5015295
time.struct_time(tm_year=2019, tm_mon=5, tm_mday=29, tm_hour=17, tm_min=3, tm_sec=28, tm_wday=2, tm_yday=149, tm_isdst=0)
time.struct_time(tm_year=2019, tm_mon=5, tm_mday=29, tm_hour=17, tm_min=3, tm_sec=28, tm_wday=2, tm_yday=149, tm_isdst=0)

可以通過time.time()獲取到當前的時間,預設是一個時間戳浮點數。

通過time.localtime()或time.localtime(time.time())都是獲取到當前時間的struct_time,裡面分別對應了當前時間的年、月、日、時、分、秒、一週的第幾天(週一是0,0-6)、一年的第幾天(從1開始,1-366)、夏時令(是夏時令1,不是0,不知道-1)。

二、time將時間戳轉換成時間字串

# 時間戳轉換成時間字串
time_str = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
print(time_str)

執行結果:

2019-05-29 17:08:35

三、time將時間字串轉換成時間戳

print(time.strptime(time_str, '%Y-%m-%d %H:%M:%S'))
# 時間字串轉換成時間戳
time_stamp = time.mktime(time.strptime(time_str, '%Y-%m-%d %H:%M:%S'))
print(time_stamp)

執行結果:

time.struct_time(tm_year=2019, tm_mon=5, tm_mday=29, tm_hour=17, tm_min=8, tm_sec=35, tm_wday=2, tm_yday=149, tm_isdst=-1)
1559120915.0

可以看到,不管是將時間戳轉換成時間字串,還是將時間字串轉換成時間戳,time模組都是通過struct_time來過渡的,也就是說,都需要先轉換成struct_time,再用struct_time轉換成想要的結果。

四、datetime獲取當前時間

from datetime import datetime
print(datetime.now())
print(datetime.now().timetuple())

執行結果:

2019-05-29 17:22:37.343784
time.struct_time(tm_year=2019, tm_mon=5, tm_mday=29, tm_hour=17, tm_min=22, tm_sec=37, tm_wday=2, tm_yday=149, tm_isdst=-1)

可以通過datetime.now()獲取到當前的時間,預設是一個datetime時間物件,樣式是一個時間字串的樣式。

注意:導包時匯入的是datetime包下的datetime模組。導包方式不同,使用時也不同。

通過datetime物件的timetuple()方法可以獲取到時間的struct_time。

五、datetime將datetime物件轉換成時間字串和時間戳

# datetime物件轉換成時間字串
datetime_str = datetime.strftime(datetime.now(), '%Y-%m-%d %H:%M:%S')
print(datetime_str)
# datetime物件轉換成時間戳
datetime_stamp = datetime.timestamp(datetime.now())
print(datetime_stamp)

執行結果:

2019-05-29 17:22:37
1559121757.343784

六、datetime將時間字串轉換成時間戳

# 時間字串轉datetime物件,再轉時間戳
datetime_stamp2 = datetime.timestamp(datetime.strptime(datetime_str, '%Y-%m-%d %H:%M:%S'))
print(datetime_stamp2)

執行結果:

1559121757.0

七、datetime將時間戳轉換成時間字串

# 時間戳轉datetime物件,再轉時間字串
datetime_str2 = datetime.strftime(datetime.fromtimestamp(datetime_stamp2), '%Y-%m-%d %H:%M:%S')
print(datetime_str2)

執行結果:

2019-05-29 17:22:37

在使用datetime進行時間戳和時間字串之間的轉換時,都是先轉換成datetime物件,然後再做進一步的轉轉。

在實際工作中,我們也可以同時使用time和datetime兩個模組,它們是可以混合使用的。

到此這篇關於python datetime 和時間戳互轉的文章就介紹到這了,更多相關python datetime轉時間戳內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com