无论哪种编程语言,时间肯定都是非常重要的部分,今天来看一下python如何来处理时间和python定时任务

注意:本篇所讲是python3版本的实现,在python2版本中的实现略有不同


1.计算明天和昨天的日期

#!/usr/bin/envpython#coding=utf-8#获取今天、昨天和明天的日期#引入datetime模块importdatetime#计算今天的时间today=datetime.date.today()#计算昨天的时间yesterday=today-datetime.timedelta(days=1)#计算明天的时间tomorrow=today+datetime.timedelta(days=1)#打印这三个时间print(yesterday,today,tomorrow)

2.计算上一个的时间

方法一:

#!/usr/bin/envpython#coding=utf-8#计算上一个的时间#引入datetime,calendar两个模块importdatetime,calendarlast_friday=datetime.date.today()oneday=datetime.timedelta(days=1)whilelast_friday.weekday()!=calendar.FRIDAY:last_friday-=onedayprint(last_friday.strftime('%A,%d-%b-%Y'))

方法二:借助模运算寻找上一个星期五

#!/usr/bin/envpython#coding=utf-8#借助模运算,可以一次算出需要减去的天数,计算上一个星期五#同样引入datetime,calendar两个模块importdatetimeimportcalendartoday=datetime.date.today()target_day=calendar.FRIDAYthis_day=today.weekday()delta_to_target=(this_day-target_day)%7last_friday=today-datetime.timedelta(days=delta_to_target)print(last_friday.strftime("%d-%b-%Y"))

3.计算歌曲的总播放时间

#!/usr/bin/envpython#coding=utf-8#获取一个列表中的所有歌曲的播放时间之和importdatetimedeftotal_timer(times):td=datetime.timedelta(0)duration=sum([datetime.timedelta(minutes=m,seconds=s)form,sintimes],td)returndurationtimes1=[(2,36),(3,35),(3,45),]times2=[(3,0),(5,13),(4,12),(1,10),]asserttotal_timer(times1)==datetime.timedelta(0,596)asserttotal_timer(times2)==datetime.timedelta(0,815)print("Testspassed.\n""Firsttesttotal:%s\n""Secondtesttotal:%s"%(total_timer(times1),total_timer(times2)))

4.反复执行某个命令

#!/usr/bin/envpython#coding=utf-8#以需要的时间间隔执行某个命令importtime,osdefre_exe(cmd,inc=60):whileTrue:os.system(cmd);time.sleep(inc)re_exe("echo%time%",5)

5.定时任务

#!/usr/bin/envpython#coding=utf-8#这里需要引入三个模块importtime,os,sched#第一个参数确定任务的时间,返回从某个特定的时间到现在经历的秒数#第二个参数以某种人为的方式衡量时间schedule=sched.scheduler(time.time,time.sleep)defperform_command(cmd,inc):os.system(cmd)deftimming_exe(cmd,inc=60):#enter用来安排某事件的发生时间,从现在起第n秒开始启动schedule.enter(inc,0,perform_command,(cmd,inc))#持续运行,直到计划时间队列变成空为止schedule.run()print("showtimeafter10seconds:")timming_exe("echo%time%",10)

6.利用sched实现周期调用

#!/usr/bin/envpython#coding=utf-8importtime,os,sched#第一个参数确定任务的时间,返回从某个特定的时间到现在经历的秒数#第二个参数以某种人为的方式衡量时间schedule=sched.scheduler(time.time,time.sleep)defperform_command(cmd,inc):#安排inc秒后再次运行自己,即周期运行schedule.enter(inc,0,perform_command,(cmd,inc))os.system(cmd)deftimming_exe(cmd,inc=60):#enter用来安排某事件的发生时间,从现在起第n秒开始启动schedule.enter(inc,0,perform_command,(cmd,inc))#持续运行,直到计划时间队列变成空为止schedule.run()print("showtimeafter10seconds:")timming_exe("echo%time%",10)

这里推荐一下我的:Python学习交流群【 784758214 】内有安装包和学习视频资料免费分享,好友都会在里面交流,分享一些学习的方法和需要注意的小细节,每天也会准时的讲一些项目实战案例。希望可以帮助你快速了解Python、学习python