当前位置: 首页 > 后端技术 > Python

Python计算前后多少天,距离X日还有多长时间

时间:2023-03-25 19:57:08 Python

原文来自:Python实用书籍:Python计算前后多少天,距离X日有多少天接下来,我会教你如何用十行代码计算出我们剩余的假期天数!我们的代码使用了一个概念,叫做时间戳:时间戳指的是从格林威治标准时间1970年1月1日00:00:00(北京时间1970年1月1日08:00:00)到现在的总秒数,因此,2019年8月1日的时间戳是从1970年1月1日08:00到2019年8月1日00:00的秒数,我们可以先用工具计算秒数:今天我们来计算我们剩余假期的天数基于时间戳!importtimeimportdatetimedefget_between_days(start_date,end_date):#获取两个日期之间的天数start_sec=time.mktime(time.strptime(start_date,'%Y-%m-%d'))end_sec=time.mktime(time.strptime(end_date,'%Y-%m-%d'))work_days=int((end_sec-start_sec)/(24*60*60))work_hours=int((end_sec-start_sec)/(60*60))work_minutes=int((end_sec-start_sec)/(60))returnwork_days,work_hours,work_minutes#获取一天中的时间yyyy-mm-ddstart_date=time.strftime('%Y-%m-%d',time.localtime(time.time()))end_date='2019-09-01'print(get_between_days(start_date,end_date))首先我们需要将2019-09-01这样yyyy-mm-dd格式的时间转换成一个时间戳,就像这样:time.mktime(time.strptime(start_date,'%Y-%m-%d'))strptimeistheyyyy-mm-dd这样的字符串转换成时间类型的变量,然后time.mktime()函数可以把时间类型的变量转换成时间戳,两个日期的时间戳相减得到两个时间之间的秒数,然后除以24小时60分60秒得到这两个时间间隔的天数work_days=int((end_sec-start_sec)/(24*60*60))除以60minutes*60秒得到这两个时间间隔的小时数work_hours=int((end_sec-start_sec)/(60*60))除以60秒得到这两个时间间隔的分钟数work_minutes=int((end_sec-start_sec)/(60))试试看,进入cmd(windows)/Terminal(macOS),cd到当前文件夹,运行命令:pythoncount_days.py可以看到8月12号的结果,2019距离2019年9月1日还有20天,正好和我们指尖算的时间一样,但是!!我的天啊,我们的暑假只剩20天了,换算成小时,就是480小时!!你做功课了吗?您可以将start_date修改为您想要计算的任何时间,不一定是今天。只要格式符合yyyy-mm-dd即可。怎么样,方便吗?嘻嘻,接下来有更方便的玩法了。我们可以计算任意一天的x天、y小时、t分钟和z秒后的时间:#filename:count_days.pyimporttimeimportdatetimedeftime_controller(d=0,hour=0,minute=0,second=0,arg=1,day=datetime.datetime.now()):#获取某天x天y小时t分z秒后的日期,如果day为空则默认为当前时间开始#all参数默认为0,调整你需要的时间即可#arg=1:获取时、分、秒后的具体时间#arg=-1:获取时、分、秒之前的具体时间secondsnow=datetime.datetime.now()iftype(day)==str:now=datetime.datetime.strptime(day,'%Y-%m-%d%H:%M:%S')如果arg==1:value=now+datetime.timedelta(days=d,hours=hour,minutes=minute,seconds=second)elifarg==-1:value=now-datetime.timedelta(days=d,hours=hour,minutes=minute,seconds=second)返回值print(time_controller(d=10,hour=20,minute=10,second=0,arg=-1,day='2019-08-0110:00:00'))print(time_controller(d=10,hour=20,minute=10,second=0,arg=-1))代码中argv=-1表示取day参数之前的时间,即10天,20小时,102019-08-0110:00:00之前的分钟数。同样进入cmd(windows)/Terminal(macOS),cd到当前文件夹,运行命令:pythoncount_days.py得到2019-08-0110:00:00之前的10天20小时10分钟时间为2019-07-2113:50:00。如果day参数为空,默认为当前时间,则结果为:2019-08-0123:35:23。由于datetime是精确到毫秒的,所以后面有个小数点,可以自己去掉!今天的小技巧不仅简单,而且在现实生活中也非常方便实用。用上面的方法来制定未来的计划,为考试倒计时做准备。还可以算算距离上次某个时间点(节假日)已经过了多久,我们认识了多久,在一起了多少天。考虑一下。兴奋的!当然,还有更多有趣的用法等着你去发现!我们的文章到此结束!如果喜欢我们的文章,请持续关注Python实战宝典!请记住我们的官网:https://pythondict.com公众号:Python实战宝典