函数 | 描述 |
---|---|
time() | 获取当前的时间戳,即计算机内部时间的值,浮点数表示 |
ctime() | 获取当前时间。并以可读的形式展示,返回时间串 |
gmtime() | 获取当前的时间,表示为计算机可处理的形式,用于其他程序的使用,获取的是时间变量。用来给其他程序提供参数 |
时间戳: 格林威治时间1970年01月01日00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。
Python中获取时间的常用方法是,先得到时间戳,再将其转换成想要的时间格式。
>>> import time
>>> time.time()
1558249620.287167
>>> time.ctime()
'Sun May 19 15:07:08 2019'
>>> time.gmtime()
time.struct_time(tm_year=2019, tm_mon=5, tm_mday=19, tm_hour=7,
tm_min=8, tm_sec=48, tm_wday=6, tm_yday=139, tm_isdst=0)
将时间以合理的形式展现出来,类似于字符串的格式化,展示需要特定的格式化控制字符,我们一般使用strftime()
方法。
>>> t = time.gmtime()
>>> time.strftime("%Y-%m-%d %H:%M:%S",t)
'2019-05-19 08:10:04'
strptime()
相当于strftime()
的互补方法,可以将字符串转换为计算机内部时间的格式。
>>> timeStr="2019-05-19 03:10:00"
>>>> time.strptime(timeStr,"%Y-%m-%d %H:%M:%S")
time.struct_time(tm_year=2019, tm_mon=5, tm_mday=19, tm_hour=3,
tm_min=10, tm_sec=0, tm_wday=6, tm_yday=139, tm_isdst=-1)
多行刷新:
程序:
import time
scale = 10
print("-----执行开始-----")
for i in range(scale+1):
a = "*" * i
b = "." * (scale-i)
c = (i / scale) * 100
print("{:^3.0f}%[{}->{}]".format(c,a,b))
time.sleep(1)
print("-----执行结束-----")
执行结果:
-----执行开始-----
0 %[->..........]
10 %[*->.........]
20 %[**->........]
30 %[***->.......]
40 %[****->......]
50 %[*****->.....]
60 %[******->....]
70 %[*******->...]
80 %[********->..]
90 %[*********->.]
100%[**********->]
-----执行结束-----
单行刷新:
刷新的本质就是让后面的输出覆盖掉之前的输出。
import time
for i in range(101):
print("\r{:3}%".format(i),end=" ")
time.sleep(1)
## “\r”表示让光标回到行首,print函数是默认换行的,在后面加“end = " " ”可以使其不换行输出。
优化:
代码:
import time
scale = 50
print("执行开始".center(scale//2,"-")) ##str.center()函数提供使字符串居中,不够自动填充的功能。第一个参数为最后长度,第二个参数为填充字符
start = time.perf_counter()
for i in range(scale+1):
a = "*" * i
b = "." * (scale-i)
c = (i / scale) * 100
dur = time.perf_counter() - start
print("\r{:^3.0f}%[{}->{}]{:.2f}s".format(c,a,b,dur),end = " ")
time.sleep(0.1)
print("\n")
print("执行结束".center(scale//2,"-"))
执行结果:
-----------执行开始----------
100%[**************************************************->]5.02s
-----------执行结束----------