先说time
time有个时间戳的概念,就是从1970.1.1到执行时间的间隔,单位是秒,比如
import time print(time.time()) #1741956425.072485
time还有个结构化时间对象 time.localtime()
import time t = time.localtime() print(t)
#t获取到的是一个元祖,里面包含了年月日时分秒等信息,注意t是一个元祖,里面的值都是不可修改对象.#time.struct_time(tm_year=2025, tm_mon=3, tm_mday=14, tm_hour=20, tm_min=51, tm_sec=1, tm_wday=4, tm_yday=73, tm_isdst=0)#依次是年月日时分秒 tm_wday表示离周一几天,,tm_day表示离今年1月1号多少天.
有了结构化对象我们就可以比较容易获取一些值,比如
print(t.tm_year, t.tm_mon, t.tm_mday, t.tm_hour, t.tm_min, t.tm_sec,t.tm_wday) #2025 3 14 20 58 2 4
如何获取今天的时间
import time print(time.ctime()) #表示今天的日期 Fri Mar 14 21:15:28 2025
下面我们看strftime() 格式化时间,也就是修改时间的显示方式
import timeprint(time.strftime("%Y-%m-%d %H:%M:%S")) #按你格式化的方式输出时间 2025-03-14 21:21:21 Y代表4位年份,m代表2位月份,d代表2位日期 #H代表24小时制的小时数,M代表分钟数,S代表秒数 I代表12小时制的小时数 print(time.strftime("%y-%m-%d %H:%M:%S")) #25-03-14 21:22:16 print(time.strftime("%Y-%m-%d %I:%M:%S")) #2025-03-14 09:22:53 #通常如果用I的话我们就和 %p一起使用,%p表示上午还是下午 print(time.strftime("%Y-%m-%d %I:%M:%S %p")) #2025-03-14 09:23:35 PM#还有一些要说的 print(time.strftime("%Y-%m-%d %H:%M:%S %a")) #2025-03-14 21:26:28 Fri %a代表星期简写 print(time.strftime("%Y-%m-%d %H:%M:%S %A")) #2025-03-14 21:26:28 Friday %A代表星期全称 print(time.strftime("%Y-%m-%d %H:%M:%S %b")) #2025-03-14 21:26:28 Mar %b代表月份简写 print(time.strftime("%Y-%m-%d %H:%M:%S %B")) #2025-03-14 21:26:28 March %B代表月份全称 print(time.strftime("%Y-%m-%d %H:%M:%S %w")) #2025-03-14 21:28:16 5 %w代表是周几,注意这里是周几,不是上面的离周一几天 print(time.strftime("%Y-%m-%d %H:%M:%S %W")) #2025-03-14 21:28:16 10 %W代表一年的第几周
然后我们来看时间等候 time.sleep(等待时间)
import time print('sleep start') time.sleep(3) print('sleep end')#打印除start后 会等3秒才会执行到end
如此我们来看一个基本案例,通常用来执行看程序执行了多少秒
import time starttime = time.time() time.sleep(5) endtime = time.time() print(f'程序执行了{(starttime-endtime):.2f}秒')#这里有两个地方要注意,第一在字符串格式化中,如果我们对小数只需要取指定位,比如2位,那么格式就是 :.2f #冒号 点号 2 f#还有一点要注意的是,如果要格式化位数,那么前面的运算方式就要加括号包裹起来 否则会报错.
time的三种时间表示方式 字符串(strftime) ,结构化时间(localtime),时间戳(mktime)
他们之间可以互相转换 但是仅限
字符串==>结构化时间
结构化时间==>时间
时间戳==>结构化时间
结构化时间==>时间戳
而时间戳和字符串之间不能直接转换,需要通过结构化对象中转一次.
import time#时间戳 ==>>结构化对象 print(time.localtime(time.time()))#结构化对象 ==>>时间戳 print(time.mktime(time.localtime()))#结构化对象 ==>>字符串 print(time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())) #结构化对象 ==>>字符串 print(time.strftime("%Y-%m-%d %H:%M:%S",time.gmtime()))#字符串 ==>>结构化对象 print(time.strptime("2017-03-14 11:11:11","%Y-%m-%d %H:%M:%S"))
对于结构化时间 localtime 还有一个utc时间
import timeprint(time.gmtime()) #生成UTC时间 print(time.gmtime(time.time() - 3600 )) #时间可以进行运算print(time.localtime()) #生成本地时间 print(time.localtime(time.time() - 3600 )) #只要是时间戳都可以进行运算