在编写代码时,经常涉及时间、日期、时间戳的相互转换,这里汇总一下,用的是python3
用到的模块
import time, datetime
1、str类型的日期转换为时间戳
# str类型的时间
time1 = '2020-05-20 13:14:00'
# 转为时间数组
timeArray = time.strptime(time1, "%Y-%m-%d %H:%M:%S")
print(timeArray) # 1381419600
# timeArray可以调用tm_year等
print(timeArray.tm_year) # 2020
print(timeArray.tm_wday) # 2
# 转为时间戳
timeStamp = int(time.mktime(timeArray))
print(timeStamp) # 1589951640
2、更改str类型日期的显示格式
time2 = "2020-05-20 13:14:00"
# 转为数组
timeArray = time.strptime(time2, "%Y-%m-%d %H:%M:%S")
# 转为其它显示格式
otherStyleTime = time.strftime("%Y/%m/%d %H:%M:%S", timeArray)
print(otherStyleTime) # 2020/05/20 13:14:00
otherStyleTime = time.strftime("%Y-%m-%d %H:%M:%S", timeArray)
print(otherStyleTime) # 2020-05-20 13:14:00
3、时间戳转换为指定格式的日期
# 使用time
timeStamp = 1589951640
timeArray = time.localtime(timeStamp)
otherStyleTime = time.strftime("%Y-%m-%d %H:%M:%S", timeArray)
print(otherStyleTime) # 2020-05-20 13:14:00
# 使用datetime
dateArray = datetime.datetime.fromtimestamp(timeStamp)
otherStyleTime = dateArray.strftime("%Y-%m-%d %H:%M:%S")
print(otherStyleTime) # 2020-05-20 13:14:00
# 使用datetime,指定utc时间,相差8小时
dateArray = datetime.datetime.utcfromtimestamp(timeStamp)
otherStyleTime = dateArray.strftime("%Y-%m-%d %H:%M:%S")
print(otherStyleTime) # 2020-05-20 05:14:00
4、获取当前时间并且用指定格式显示
# time获取当前时间戳
now = int(time.time())
timeArray = time.localtime(now)
print(timeArray)
otherStyleTime = time.strftime("%Y--%m--%d %H:%M:%S", timeArray)
print(otherStyleTime)
# time.struct_time(tm_year=2020, tm_mon=5, tm_mday=21, tm_hour=8, tm_min=41, tm_sec=48, tm_wday=3, tm_yday=142, tm_isdst=0)
# datetime获取当前时间,数组格式
now = datetime.datetime.now()
print(now)
otherStyleTime = now.strftime("%Y--%m--%d %H:%M:%S")
print(otherStyleTime)
参考: