一、在python中,时间的几种表达形式
时间戳(timestamp):通常来说,时间戳表示的是从1970年一月一日00:00:00开始按秒计算的偏移量,我们运行type(time.time())返回的是浮点型<class 'float'> 格式化时间字符串(format string) 结构化时间(struct_time):struct_time元组共有9个元素,(年,月,日,时,分,秒,星期几,一年中第几天,夏令时)
import time print(type(time.time())) print(time.time())#时间戳 print(time.strftime('%Y-%m-%d %X'))#格式化的字符串时间 """ %Y年%m月%d日 %X时分秒 """ print(time.localtime())#本地时区的struct_time,默认参数是当前时间戳 print(time.gmtime())#UTC时区的struct_time """ <class 'float'> 1528686563.300955 2018-06-11 11:09:23 time.struct_time(tm_year=2018, tm_mon=6, tm_mday=11, tm_hour=11, tm_min=9, tm_sec=23, tm_wday=0, tm_yday=162, tm_isdst=0) time.struct_time(tm_year=2018, tm_mon=6, tm_mday=11, tm_hour=3, tm_min=9, tm_sec=23, tm_wday=0, tm_yday=162, tm_isdst=0) """
二、time模块的几种转换方式
计算机认识的时间只能是时间戳格式,而程序员可处理的或者说人类能看懂的时间有:'格式化的时间字符串','结构化时间'
1、时间戳转化为结构化时间
now_time=time.time() print(now_time) struct_time=time.localtime(now_time)#时间戳转化为结构化时间 print(struct_time)#tm_wday=0代表星期一,6代表星期日,tm_yday=162表示在这一年中已经过了162天了,tm_isdst=0指定为非夏令时,1为夏令时,-1为由系统判断 """ 1528687081.7820013 time.struct_time(tm_year=2018, tm_mon=6, tm_mday=11, tm_hour=11, tm_min=18, tm_sec=1, tm_wday=0, tm_yday=162, tm_isdst=0) """
2、结构化时间转化为时间戳
struct_time=time.localtime(time.time()) print(struct_time) now_time=time.mktime(struct_time) print(now_time) """ time.struct_time(tm_year=2018, tm_mon=6, tm_mday=11, tm_hour=11, tm_min=20, tm_sec=37, tm_wday=0, tm_yday=162, tm_isdst=0) 1528687237.0 """
3、结构化时间转化为字符串时间
struct_time=time.localtime(time.time())#把时间戳转换为结构化时间
print(struct_time)
str_time=time.strftime('%Y-%m-%d',struct_time)
print(str_time)
"""
time.struct_time(tm_year=2018, tm_mon=6, tm_mday=11, tm_hour=11, tm_min=23, tm_sec=52, tm_wday=0, tm_yday=162, tm_isdst=0)
2018-06-11
"""
4、字符串时间转化为结构化时间
str_time='2018-04-17' struct_time=time.strptime(str_time,'%Y-%m-%d') print(struct_time) """ time.struct_time(tm_year=2018, tm_mon=4, tm_mday=17, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=107, tm_isdst=-1) """
5、时间戳时间转化为字符串时间
print(time.strftime('%Y-%m-%d %X',time.localtime(time.time()))) """ 2018-06-11 11:44:11 """
6、字符串时间转化为时间戳
print(time.mktime(time.strptime('2018-06-11 11:44:11','%Y-%m-%d %X'))) """ 1528688651.0 """