python3 time模块
import time # strftime获取当前系统格式化时间,%X和%H:%M:%S相等 print(time.strftime("%Y-%m-%d %H:%M:%S")) print(time.strftime("%Y-%m-%d %X")) print(type(time.strftime("%Y-%m-%d %H:%M:%S")))
2019-11-27 22:00:14 2019-11-27 22:00:14 <class 'str'>
import time
# 查看系统时间,拿到的是一个数字(时间戳),从1970-01-01 00:00:00开始计算,以秒为单位
# 这里需要知道中国的时间是UTC+8,也就是东八区,当开始计数的时候,中国已经经历的8个小时。
print(time.time())
print(type(time.time()))
1574863230.2989101 <class 'float'>
import time # 一年365天,一天24小时,一小时60分钟,一分钟60秒,一年是365*24*60*60=31536000秒,计算从1970-01-01到现在经过了多少年? print(time.time()/31536000)
49.93856116571959
import time # sleep让程序睡几秒,计算程序一共使用了多少秒? start_time = time.time() time.sleep(2) end_time = time.time() print(end_time - start_time)
2.0001142024993896
import time
# localtime获取当前系统(东八区)的结构化时间(常用) print(time.localtime()) print(type(time.localtime())) # gmtime获取UTC(零时区)的结构化时间(不常用) print(time.gmtime()) print(type(time.gmtime()))
time.struct_time(tm_year=2019, tm_mon=11, tm_mday=27, tm_hour=22, tm_min=11, tm_sec=13, tm_wday=2, tm_yday=331, tm_isdst=0) <class 'time.struct_time'> time.struct_time(tm_year=2019, tm_mon=11, tm_mday=27, tm_hour=14, tm_min=11, tm_sec=13, tm_wday=2, tm_yday=331, tm_isdst=0) <class 'time.struct_time'>
import time # localtime将指定的时间戳转换为结构化时间 n = 31536000 print(time.localtime(n)) print(type(time.localtime(n)))
time.struct_time(tm_year=1971, tm_mon=1, tm_mday=1, tm_hour=8, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=1, tm_isdst=0) <class 'time.struct_time'>
import time # strftime将结构化时间转换为格式化时间 n = 31536000 struct_time = time.localtime(n) date_time = time.strftime("%Y-%m-%d %H:%M:%S", struct_time) print(date_time) print(type(date_time))
1971-01-01 08:00:00 <class 'str'>
import time # mktime将格式化时间转化为时间戳:字符串-》结构化时间-》时间戳 struct_time = time.strptime("2019-11-22 12:13:14", "%Y-%m-%d %H:%M:%S") print(time.mktime(struct_time)) print(type(time.mktime(struct_time)))
1574395994.0 <class 'float'>
''' 时间戳转化成格式化时间 strftime -- format 1.把时间戳转化为结构化时间 2.把结构化时间转化为格式化时间 ''' n = 10000000 struct_time = time.localtime(n) print(struct_time) print(time.strftime("%Y-%m-%d %H:%M:%S", struct_time))
time.struct_time(tm_year=1970, tm_mon=4, tm_mday=27, tm_hour=1, tm_min=46, tm_sec=40, tm_wday=0, tm_yday=117, tm_isdst=0) 1970-04-27 01:46:40
''' 把字符串转化为数字(时间戳)strptime -- parse 1.把字符串转化为结构化时间 2.把结构化时间转化为时间戳 ''' s = input("请输入一个时间(%Y-%m-%d %H:%M:%S):") struct_time = time.strptime(s, "%Y-%m-%d %H:%M:%S") # p:parse print(struct_time) print(time.mktime(struct_time))
请输入一个时间(%Y-%m-%d %H:%M:%S):2018-1-2 12:2:4 time.struct_time(tm_year=2018, tm_mon=1, tm_mday=2, tm_hour=12, tm_min=2, tm_sec=4, tm_wday=1, tm_yday=2, tm_isdst=-1) 1514865724.0
'''比计较两个时间相差多少小时多少分钟''' s1 = "1989-01-02 12:00:00" s2 = "1989-01-01 14:35:00" n1 = time.mktime(time.strptime(s1, "%Y-%m-%d %H:%M:%S")) n2 = time.mktime(time.strptime(s2, "%Y-%m-%d %H:%M:%S")) dif_hour, dif_second = divmod(abs(n1-n2), 60*60) dif_min = dif_second//60 print("两个时间相差%d小时%d分钟" % (dif_hour, dif_min))
两个时间相差21小时25分钟
'''日期格式化的标准
%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(0000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00-59)
%S 秒(00-59)
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身
'''