电子商务网站cms,如何开通属于自己的网站,网站页面设置,贺州市住房与城乡建设局网站计算机是如何计算两个日期之间的天数的#xff0c;这个问题看起来好像很简单#xff0c;但是仔细一想#xff0c;好像还没那么简单#xff0c;月与月之间天数不一样#xff0c;平年和闰年也会影响天数。举个例子#xff1a;2017年2月1日-2017年6月1日中间有多少天#x…计算机是如何计算两个日期之间的天数的这个问题看起来好像很简单但是仔细一想好像还没那么简单月与月之间天数不一样平年和闰年也会影响天数。举个例子2017年2月1日-2017年6月1日中间有多少天那么计算机应该如何计算如果是你的话你应该怎么去算呢一般人按照月份加 283130311笨一点的人找一本日历一天一天的数虽然慢一点但只要会数数肯定也可以数出来第一种算法对人类来说确实是简单的但是有前提你知道每个月有几天今年是否是闰年这个计算包含两部分整月数非整月数人类几乎口算就可以但是如果计算机实现起来其实会复杂的多因为计算机只会做一些简单重复的劳动而且速度非常快。下图是我用python实现的一个简单版本基本实现了此项需求import mathdef isLeapYear(year):judge a year is leapyearif math.fmod(year, 4) 0 and math.fmod(year, 100) ! 0:return Trueif math.fmod(year, 400) 0:return Truereturn Falsedef daysInMonth(month, isLeapYear):assert month 1 and month 12monthDays (31,28,31,30,31,30,31,31,30,31,30,31)day monthDays[month-1]if isLeapYear and month 2:day 1return daydef nextDay(year, month, day):isleap isLeapYear(year)monthDay daysInMonth(month, isleap)if day monthDay:return year, month, day 1else:if month 12:return year 1, 1, 1else:return year, month 1, 1def daysBetweenDates(year1, month1, day1, year2, month2, day2):days 0nextday (year1, month1, day1)while True:nextday nextDay(nextday[0], nextday[1], nextday[2])days 1if nextday (year2, month2, day2):return daysreturn None核心算法是daysBetweenDates()和nextDay() daysBetweenDates()的思想是从第一个日期开始数一直数到第二个日期返回 nextDay()实现了数日期的正确性内部屏蔽了闰年和月份对天数的影响。什么是闰年这个很多人一直忽略的问题以及它的算法为什么是这个样子这里贴一个链接。