如何用python写一个计算日期间隔的程序?

文章目录

  • 如何用python写一个计算日期间隔的程序?
    • 前言
    • 问题梳理
    • 问题解决
    • 写在后面

前言

为什么想起来写一个这样的程序呢?

前几天聊天的时候,突然想计算一下两个日期之间的间隔,于是去搜索类似功能的网站。

然后就在想这个问题会很困难嘛,我能不能也写一个小程序呢?

可能这里就有朋友要说了,明明有现成的模块能之间计算日期间隔,你为什么不用呢?

阿这我就是不太想用现成的模块,想自己写一个玩,就像有现成的网站我用完还是想自己写一个了解一下原理。

问题梳理

那么计算日期间隔我们会遇到哪些问题呢?

首先是一个很容易出错的问题:闰年

为什么说闰年这个问题容易出错呢?

因为很多朋友可能对闰年的概念也不是很了解,觉得能被4整除就是闰年。

但其实1900和2100年都不是闰年。

以下是百度百科中对闰年的解释

然后我们用什么方式来计算间隔呢?

首先我们判断第一个日期是第一年的第a天,在判断第二个日期是第二年的第b天,再计算两年的第一天之间的间隔天数c,计算c+b-a,就是最终结果了。

问题解决

首先我们来写一个判断闰年的函数,闰年的英文为Leap Year,所以用函数LY(a)来表示,如果是闰年返回1,不是闰年返回0

def LY(a):if a>=1582:if a % 400 == 0:return 1elif a % 100 == 0:return 0elif a % 4 == 0:return 1else:return 0else:if a % 4 == 0:return 1else:return 0

那么核心问题解决了之后,就很简单了,一下是我的全部代码

print("Please enter initial Time(yyyymmdd)")
t0 = input()
print("Please enter a cut-off time(yyyymmdd)")
t1 = input()
y = [31,28,31,30,31,30,31,31,30,31,30,31]
ly = [31,29,31,30,31,30,31,31,30,31,30,31]
y0 = int(t0[0:4])
y1 = int(t1[0:4])
m0 = int(t0[4:6])
m1 = int(t1[4:6])
d0 = int(t0[6:8])
d1 = int(t1[6:8])
def LY(a):if a>=1582:if a % 400 == 0:return 1elif a % 100 == 0:return 0elif a % 4 == 0:return 1else:return 0else:if a % 4 == 0:return 1else:return 0
if LY(y0) == 0:sumy0 = 365sumd0 = sum(y[0:m0-1]) + d0
else:sumy0 = 366sumd0 = sum(ly[0:m0-1]) + d0
if LY(y1) == 0:sumy1 = 365sumd1 = sum(y[0:m1-1]) + d1
else:sumy1 = 366sumd1 = sum(ly[0:m1-1]) + d1
if y1-y0 == 0:ans = sumd1 - sumd0
else:l=0for i in range(y0,y1):if LY(i) == 0:l+=365else:l+=366ans = l + sumd1 -sumd0
print('The interval is {0} days'.format(ans))
input('Press Enter to exit')

运行一下,得到如下结果。

然后我将文件打包为Calculate date interval.exe

上传到了github,可以点击这里来查看。

写在后面

本人只是一个python爱好者,没事写点自己的学习心得,如果有什么错误欢迎来批评指正。

就这样,谢谢大家的观看。

如何用python写一个计算日期间隔的程序?相关推荐

  1. 手机版python3h如何自制游戏_教你如何用 Python 写一个小游戏

    教你如何用 Python 写一个小游戏 引言 最近 python 语言大火, 除了在科学计算领域 python 有用武之地之外, 在游戏后台等方面, python 也大放异彩, 本篇博文将按照正规的项 ...

  2. 贪吃蛇博弈算法python_算法应用实践:如何用Python写一个贪吃蛇AI

    原标题:算法应用实践:如何用Python写一个贪吃蛇AI 前言 这两天在网上看到一张让人涨姿势的图片,图片中展示的是贪吃蛇游戏, 估计大部分人都玩过.但如果仅仅是贪吃蛇游戏,那么它就没有什么让人涨姿势 ...

  3. [译] 如何用 Python 写一个 Discord 机器人

    原文地址:How to write a Discord bot in Python 原文作者:Junpei Shimotsu 译文出自:掘金翻译计划 本文永久链接:github.com/xitu/go ...

  4. python爬虫抢火车票_如何用python写一个简单的12306抢票软件|python 爬火车票 教程...

    python 如果抓取验证码图片 类似12306的登录验证码图片 这个以前做次.最大的麻烦是码的识别算法的识别率太低.12306那种网站登陆错3次就限制你20分钟.所以除非你有33%以上的识别率否则不 ...

  5. python 题库自动答题,自动匹配题库_如何用python写一个从题库自动匹配的答题脚本_淘题吧...

    A. web数据库题目:根据用户输入的用户名和密码于数据库中的记录是否匹配制作一个用户登录模块 http://blog.csdn.net/love_leve/article/details/43226 ...

  6. python软件代码示例-用Python写一个模拟qq聊天小程序的代码实例

    Python 超简单的聊天程序 客户端: import socket, sys host = '10.248.27.23' # host = raw_input("Plz imput des ...

  7. 能不能用python开发qq_用Python写一个模拟qq聊天小程序的代码实例

    用Python写一个模拟qq聊天小程序的代码实例 发布时间:2020-09-09 07:49:29

  8. 用Python写一个模拟qq聊天小程序的代码实例

    前言 今天小编就为大家分享一篇关于用Python写一个模拟qq聊天小程序的代码实例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧 Python 超简单的聊天 ...

  9. python能制作游戏吗_如何用python写一个小游戏

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 引言最近python语言大火,除了在科学计算领域python有用武之地之外,在游 ...

最新文章

  1. Redis初学:4(Redis的常用命令)
  2. 李超线段树(Li-Chao Segment Tree)
  3. 你是一个职业的页面重构工作者吗?
  4. 技术感悟--回顾2012
  5. python 时间戳 字符串_python time模块 字符串 时间戳互转
  6. MVC-07 案例1
  7. P1967 货车运输
  8. (chap6 Http首部) 响应首部字段 LocationProxy-AuthenticateRetry-After
  9. 神策数据:游戏买量与长线运营的数据宝典
  10. java 连接 oracle 10_java-连接到oracle 10g数据库时,获得IOException“...
  11. 《你的灯亮着吗》读书笔记Ⅲ
  12. SoapUI测试webservice
  13. 中raise抛出异常_Ruby 异常
  14. 实例集群状态为Fail导致的集群混乱排查和复现
  15. MATLAB数组生成、引用
  16. Mercurial (hg)
  17. java合同到期提醒_合同到期提醒,你会操作吗?
  18. 2015 多校联赛 ——HDU5302(矩阵快速幂)
  19. PostgreSQL - 如何杀死被锁死的进程
  20. 四旋翼无人机学习第19节--allgero的板框导入,网表导入

热门文章

  1. 简历造假,你以为我不知道?
  2. 酒店公共广播背景音乐系统-基于互联网+的酒店IP网络广播系统设计
  3. XSS学习笔记:XSS Game(xss.pwnfunction.com)1-11通关全解
  4. 帐号泄露事件频发,到底什么样的密码才安全?
  5. 抖音短视频APP——运营策略梳理
  6. 在端口限制得场合让我们可爱的QQ复活
  7. Promise的真正意义--不只为回调地狱
  8. 南昌大学肿瘤学考研考情与难度、参考书及上岸前辈备考经验指导
  9. 木星被撞 凹痕大如地球
  10. Wireshark下载及安装