一、时间的三种表示方法
1.1 时间戳(timestamp)
import time
print(time.time())
#1605930113.361613
时间戳:显示从1970-01-01 00:00:00(格林尼治时间)起一直到现在的秒数
显示从1970-01-01 08:00:00(北京时间)起一直到现在的秒数
作用:可以用来计算时间间隔
t1 = time.time()
time.sleep(3)
t2 = time.time()
print(t2-t1)
# 3.000171422958374
1.2 结构化时间(struct time)
res = time.localtime()
print(time.localtime())
#time.struct_time(tm_year=2020, tm_mon=11, tm_mday=21, tm_hour=11, tm_min=48, tm_sec=19, tm_wday=5, tm_yday=326, tm_isdst=0)
其中需要注意的是tm_wday = 5的指的是今天是一周中的星期六,0:星期一,6:星期日
tm_yday=326指的是今天是一年中的第326天。
DST指的是夏令时,0:不是夏令时,1:是夏令时
作用:结构化时间方便于取部分时间用于调用
res = time.localtime()
print(res)
print(res.tm_year)
print("The %sth day"%res.tm_yday)
#time.struct_time(tm_year=2020, tm_mon=11, tm_mday=21, tm_hour=11, tm_min=56, tm_sec=37, tm_wday=5, tm_yday=326, tm_isdst=0)
#2020
#The 326th day
1.3 格式化时间(format time)
作用:标准时间显示
print(time.strftime("%Y-%m-%d %H:%M:%S %p"))
2020-11-21 11:59:08 AM
除了time模块之外,datetime也可以用作标准时间的显示
import datetime
print(datetime.datetime.now())
print(datetime.datetime.now()-datetime.timedelta(weeks=3))
#2020-11-21 12:03:58.868891
#2020-10-31 12:03:58.868891
二、时间格式的转换
如何把一个时间字符串转换成标准的格式化时间?
;# format time <---> struct time <---> timestamp
"1970-01-01 09:00:00"
# str"time" ---> struct time
struct_time = time.strptime("1970-01-01 08:00:00","%Y-%m-%d %H:%M:%S")
# struct time ---> timestamp
timestamp = time.mktime(struct_time)
# timestamp ---> struct time
res1 = time.localtime(timestamp) # 本地时区: 北京时间:UTC+8
res2 = time.gmtime(timestamp) # 格林尼治时间
# struct time ---> format time
res3 = time.strftime("%Y-%m-%d %X",res1)
res4 = time.strftime("%Y-%m-%d %X",res2)
print(res3)
print(res4)
print(time.mktime(res1))
# 1970-01-01 08:00:00
# 1970-01-01 00:00:00
# 0.0