在實際開發中經常遇到時間格式的轉換,例如: 前端傳遞的時間格式是字元串格式,我們需要將其轉換為時間戳,或者前臺傳遞的時間格式和我們資料庫中的格式不對應,我們需要對其進行轉換才能與資料庫的時間進行匹配等。 1、將字元串時間轉換成時間戳 將字元串時間轉換成時間組後在將其轉換成時間戳格式 得到時間組對象後 ...
在實際開發中經常遇到時間格式的轉換,例如: 前端傳遞的時間格式是字元串格式,我們需要將其轉換為時間戳,或者前臺傳遞的時間格式和我們資料庫中的格式不對應,我們需要對其進行轉換才能與資料庫的時間進行匹配等。
1、將字元串時間轉換成時間戳
import time a = "2019-5-10 20:40:00" b=time.strptime(a,'%Y-%m-%d %H:%M:%S')#轉換為時間組對象 print(b)
*****結果*******
time.struct_time(tm_year=2019, tm_mon=5, tm_mday=10, tm_hour=20, tm_min=40, tm_sec=0, tm_wday=4, tm_yday=130, tm_isdst=-1)
註意:
b=time.strptime(a,'%Y:%m:%d %H:%M:%S') #轉換的時間格式要與傳遞過來的格式保持一致,否則會報錯格式不匹配。
報錯提示:
ValueError: time data '2019-5-10 20:40:00' does not match format '%Y:%m:%d %H:%M:%S'
將字元串時間轉換成時間組後在將其轉換成時間戳格式
import time a = "2019-5-10 20:40:00" b=time.strptime(a,'%Y-%m-%d %H:%M:%S') c=time.mktime(b) print(c)
*****結果*******
1557492000.0
得到時間組對象後可以調用其中的tm_year、tm_mon、tm_day、tm_wday等方法得到想要的年月日等信息
import time
a = "2019-5-10 20:40:00"
b=time.strptime(a,'%Y-%m-%d %H:%M:%S')
print(b.tm_year)
print(b.tm_mon)
print(b.tm_wday)#第幾個工作日,周一是第0個工作日
print(b.tm_hour)
*****結果*******
2019
5
4
20
2、字元串格式更改,
如將 "2019-5-13 20:40:00"更改為"2019:5:13 20:40:00"或者’‘2019/05/13 格式。
先將字元串通過time.strptime轉換成時間數組,然後用time.strftime轉換成想要的格式。
import time a = "2019-5-13 20:40:00" b=time.strptime(a,'%Y-%m-%d %H:%M:%S') #先轉換為時間數組,然後轉換為其他格式 c=time.strftime('%Y:%m:%d %H:%M:%S',b) d=time.strftime('%Y/%m/%d ',b)#轉換為年月日格式 print(c) print(d) ****結果**** 2019:05:13 20:40:00 2019/05/13
3、獲取當前時間並轉換成指定格式
方法一:通過time.time得到時間戳
import time a = time.time() #時間戳 b=time.localtime(a) #通過time.localtime將時間戳轉換成時間組 c=time.strftime("%Y-%m-%d %H:%M:%S", b)#再將時間組轉換成指定格式 print(a) print(b) print(c) ****結果**** 1557493737.3355823 time.struct_time(tm_year=2019, tm_mon=5, tm_mday=10, tm_hour=21, tm_min=8, tm_sec=57, tm_wday=4, tm_yday=130, tm_isdst=0) 2019-05-10 21:08:57
方法二:通過datetime.datetime.now()直接得到當前時間, 然後再用time.strftime進行格式轉化
import time,datetime #需要datetime a = datetime.datetime.now() b=a.strftime("%Y:%m:%d %H:%M:%S")#再將時間組轉換成指定格式,註意:跟第一種時間組轉化的區別 print(a) print(b) ****結果**** 2019-05-10 21:14:55.397223 2019:05:10 21:14:55
4、時間戳轉換為指定格式日期:
方法一 :利用localtime()轉換為時間數組,然後格式化為需要的格式,如
import time a=1557493737.3355823 b= time.localtime(a) #將時間戳轉換為時間組 c=time.strftime("%Y-%m-%d %H:%M:%S",b)#再將時間組轉換成指定格式 print(b) print(c) ****結果**** time.struct_time(tm_year=2019, tm_mon=5, tm_mday=10, tm_hour=21, tm_min=8, tm_sec=57, tm_wday=4, tm_yday=130, tm_isdst=0) 2019-05-10 21:08:57
方法二:利用datetime對時間戳進行處理,再轉換為指定格式
import datetime a=1557493737.3355823 b= datetime.datetime.utcfromtimestamp(a) c=b.strftime("%Y-%m-%d %H:%M:%S") print(b) print(c) ****結果**** 2019-05-10 13:08:57.335582 2019-05-10 13:08:57
5、將3天前的時間轉換為指定格式:
方法一:推薦使用
import datetime,time a=datetime.datetime.now() #獲取當前時間 b=(a-datetime.timedelta(days=3))#獲取3天前的時間 c=b.strftime("%Y:%m:%d %H:%M:%S") print(a) print(b) print(c) ****結果**** 2019-05-10 21:48:22.001840 2019-05-07 21:48:22.001840 2019:05:07 21:48:22
註:timedelta()的參數有:days,hours,seconds,microsecond
方法二:
import datetime,time a=datetime.datetime.now() #獲取當前時間 b=(a-datetime.timedelta(days=3))#獲取3天前的時間 c=time.mktime(b.timetuple()) #將時間轉換為時間戳 d=time.localtime(c)#將時間戳轉換成時間組 e=time.strftime("%Y:%m:%d %H:%M:%S",d) print(b) print(c) print(d) print(e) ****結果**** 2019-05-07 21:34:49.930919 1557236089.0 time.struct_time(tm_year=2019, tm_mon=5, tm_mday=7, tm_hour=21, tm_min=34, tm_sec=49, tm_wday=1, tm_yday=127, tm_isdst=0) 2019:05:07 21:34:49
6、給定時間戳,計算3天前的時間:先轉換為datetime 再進行計算:
import datetime,time a=1557493737.3355823 b=datetime.datetime.utcfromtimestamp(a) c=(b-datetime.timedelta(days=3)) d=c.strftime("%Y-%m-%d %H:%M:%S") print(b) print(c) print(d) ****結果**** 2019-05-10 13:08:57.335582 2019-05-07 13:08:57.335582 2019:05:07 13:08:57