Python中的時間日期轉換

2021-08-31 02:44:20 字數 2163 閱讀 5365

python關於時間日期有兩個庫datetime和time,於是我們要在四種格式之間轉換:

datetime.datetime物件 datetime.datetime.now()

time.struct_time物件  time.localtime()

字串 "2010-12-04t10:30:53"

時間戳 1291433453  (一般我們不關心微秒)

列一下它們的轉換方法:

dt = datetime.datetime(2010, 12, 4, 10, 30, 53)

dt = datetime.datetime.strptime("2010-12-04t10:30:53", "%y-%m-%dt%h:%m:%s")

dt.strftime("%y-%m-%dt%h:%m:%s") -> "2010-12-04t10:30:53"

或者 dt.isoformat().split(".").pop(0) -> "2010-12-04t10:30:53"

dt = datetime.datetime.fromtimestamp(1291433453)

(?) dt -> 1291433453

t = time.localtime(1291433453)

t = dt.timetuple()

t = time.strptime("2010-12-04t10:30:53", "%y-%m-%dt%h:%m:%s")

t.strftime("%y-%m-%dt%h:%m:%s") -> "2010-12-04t10:30:53"

long( time.mktime(t) ) -> 1291433453

(?) t -> dt

可以看出,python沒有提供直接的time.struct_time物件到datetime.datetime物件的轉換,也沒有直接提供datetime.datetime物件到時間戳的轉換。另外,python的兩個strftime

,strptime中都沒有時間戳的格式化符號。

對time.struct_time物件到datetime.datetime物件的轉換,很容易想到通過字串形式過渡一下:

dt = datetime.datetime.strptime(t.strftime("%y-%m-%dt%h:%m:%s"), "%y-%m-%dt%h:%m:%s")

更好的方式應該是這樣

dt = datetime.datetime(*tuple(t)[:6])

對於datetime.datetime物件到時間戳的轉換,常用做法是通過time.struct_time物件過渡:

long(time.mktime(dt.timetuple()))

壞處是要同時用到datetime和time兩個模組。

其實可以在datetime內部解決,現在給乙個三種格式轉為時間戳的方法:

def to_timestamp(mytime, format="%y-%m-%dt%h:%m:%s"):

import time

from datetime import datetime

if isinstance(mytime, time.struct_time):

return long(time.mktime(mytime))

elif isinstance(mytime, str):

mytime = datetime.strptime(mytime, format)

if isinstance(mytime, datetime):

#得到乙個與時間戳相等的datetime.timedelta物件

delta = mytime - datetime(1970,1,1)

utc = delta.days * 86400l + delta.seconds

#上面求得delta是乙個localtime操作,把時區也考慮進去了,我們要還原

return utc - 8 * 3600

long(dt.strftime("%s"))

python中時間 日期 時間戳的轉換

在編寫 時,往往涉及時間 日期 時間戳的相互轉換。引入模組 import time,datetime 字元型別的時間 tss1 2013 10 10 23 40 00 轉為時間陣列 timearray time.strptime tss1,y m d h m s print timearray ti...

python中時間 日期 時間戳的轉換

1 簡介 在編寫測試指令碼中,因涉及時間 日期 時間戳的相互轉換。2 引入模組 1 引入模組 2import time,datetime 2.1 str型別的日期轉換為時間戳 1 字元型別的時間 2 tss1 2020 01 10 23 40 00 3 轉為時間陣列 4 timearray time...

python中時間 日期 時間戳之間的轉換

一 將字串轉換為時間戳 coding utf 8 author sky import time tm 2013 10 10 23 40 00 將其轉換為時間陣列 timearray time.strptime tm,y m d h m s 轉換為時間戳 timestamp int time.mkti...