坐在电脑旁边敲代码是很不错的,可是有时候网速会卡,要下载一些东西的时候非常得不方便。
这个时候我们会想,既然手机可以调闹钟,那么程序能不能也设置一个闹钟呢?这样大半夜的就不用偷偷起来趁网速快下载一些内存比较大的文件了。
在python中就提供了两个模块,能够让计算机的时钟自动到了时间后就调用函数——time()和datetime()
首先来看看time这个模块,最有用的两个函数就是time.time() 和time.sleep(),分别有什么用处呢?
① time.time()
在编程中有一个时间标准经常被使用,那就是Unix纪元,也就是我们常说的2018年9月20日10点,time.time() 函数他会返回调用函数的那一刻的秒数,类型是浮点型,这个数字被我们规定俗称“Unix纪元时间戳”。这个时间戳是不可更改的,除非你有多啦a梦的时光机咯,不然就不可更改。所以在2017年大火的区块链之所以被人说安全性高,引用的一个技术就是时间戳
import time
print(time.time())
② time.sleep()
有些时候,你不想程序跑得太快,或者你想要得到的数据能保存一小会,你可以给程序打一针安眠针,让她乖乖滴睡一会。
至于要睡多久,就得看你打的剂量有多少咯。在python中,time.sleep()就相当于是安眠针。
time.sleep()起到的作用其实就是拦路,不让你这么快就通过。在idle中即使按Ctrl+c,也是没有办法停止time.sleep()的使用。如果有异常,系统也会暂停相应的时间,才会抛出程序异常。
import time
for i in range(5):
print('睡吧睡吧,小可爱')
time.sleep(1)
print('再睡一会,我还有其他事呢!')
time.sleep(3)
小项目:制作超级时钟
import time
print('这是一个超级秒表,请你按下回车来启动,按Ctrl+c来停止')
# 等待输入
input()
print('开始计时')
# 记录开始的时间
starttime = time.time()
# 记录停止的时间
lasttime = starttime
# 设置编号
lapnum = 1
# 防止程序崩溃,使用try语句
try:
# 如果是正确的就记录
while True:
# 调用input来等待下一次输入,直到用户按下一个回车键
input()
# 一圈结束,就用当前时间减掉lasttime,得到跑完这一圈所花的时间。
# round函数表示的是四舍五入,2表示的是保留两位小数
laptime = round(time.time() - lasttime,2)
# 总共花的时间
totaltime = round(time.time() - starttime,2)
print('%s:%s(%s)'%(lapnum,totaltime,laptime),end='')
lapnum += 1
lasttime = time.time()
except KeyboardInterrupt:
print('计时完成')
前面我们知道了time获得的是一个时间戳,但这是非人类看的啊,正常人看到这一串数字怎么会知道什么时间呢?
所以python中一入另外一个模块datetime()来记录时间,返回的数据就非常直观漂亮了。
import datetime dt = datetime.datetime.now() print(dt) print(dt.year) print(dt.month) print(dt.day) print(dt.hour) print(dt.minute) print(dt.second)
怎么样,是不是非常漂亮?
尽管Unix时间戳有点反人类,但是一物降一物,datetime就有办法收拾他,那就是一个属性(家法伺候)——fromtimestamp()
import time import datetime t = time.time() print(t) dt = datetime.datetime.fromtimestamp(t) print(dt)
datetime这个模块可以说是非常贤惠了,不仅能表示具体的时刻,还能够表示一段时间,这就要提到她的另外一个属性——timedelta。首先得给她声明一个对象,这样她才知道向谁展示才艺。
import datetime delta = datetime.timedelta(days = 11,hours=10,minutes=34,seconds=32) print(delta.days) print(delta.seconds) print(delta.microseconds) print(delta.total_seconds()) print(str(delta))
优秀的人,肯定不止是一个技能,更何况是优秀的datetime和time呢?
两个家伙在一起,就会散发出恋爱的芳香,产生1+1>2的效果。
我们可以把这两个模块合起来使用,就能暂停程序,直到某段时间了,如此一来,你就有更多的时间去玩计算机了 。
import time import datetime newyear = datetime.datetime(2018,12,31,0,0,0) while datetime.datetime.now() < newyear: time.sleep(1) print('等待总是寂寞难耐的。。。')
如果你觉得以上的时间还不够漂亮的话,那就只能祭出杀手锏了——strtime()
import time import datetime current = datetime.datetime.now() print(current.strftime('%Y-%m-%d %H:%M:%S')) print(current.strftime('%I:%M %p'))
你还可以很无聊的吧字符串转换成datetime对象,虽然这样做确实挺无聊的,引入strptime函数即可
import time struct_time = time.strptime("30 Nov 00", "%d %b %y")