zoukankan      html  css  js  c++  java
  • Python编程题5--计算两个日期之间相隔的天数

    题目

    已知任意两个日期,计算出两个日期之间相隔的天数。

    实现思路1

    这里我们运用 Python 里面内置模块 time 来处理问题。

    • 已知2个日期,格式为 yyyy-mm-dd
    • 通过 time.strptime() 方法,把日期时间字符串解析为时间元组
    • 通过 time.mktime() 方法,把时间元祖转换为时间戳
    • 根据2个日期对应的时间戳,得到2个日期相差的秒数,进而计算出间隔天数

    代码实现

    import time
    
    def demo(day1, day2):
        time_array1 = time.strptime(day1, "%Y-%m-%d")
        timestamp_day1 = int(time.mktime(time_array1))
        time_array2 = time.strptime(day2, "%Y-%m-%d")
        timestamp_day2 = int(time.mktime(time_array2))
        result = (timestamp_day2 - timestamp_day1) // 60 // 60 // 24
        return result
    
    day1 = "2018-07-09"
    day2 = "2020-09-26"
    
    day_diff = demo(day1, day2)
    print("两个日期的间隔天数:{} ".format(day_diff))
    

    实现思路2

    这里我们不使用 时间函数 来处理问题,我们可以先计算出每个日期距离公元元年1月1日的总天数,再求出两个日期的间隔天数。

    • 需要判断某个年份是不是闰年,如果是闰年,则该年份天数为365+1
    • 通过一个列表来存储每月份的天数,如果所给的2个日期中,年份是闰年,则2月份天数为28+1
    • 根据所给的日期,遍历年月日,分别计算出2个日期距离公元元年1月1日的总天数
    • 两个总天数相减,即可求出两个日期之间的天数

    注意:

    闰年的计算方法是 "四年一闰,百年不闰,四百年再闰" ,也就是说一般有以下两个条件:

    • 能被4整除且不能被100整除的是闰年
    • 能被400整除的是闰年

    代码实现

    def is_leap_year(year):
        if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:
            return 1
        else:
            return 0
    
    def get_days(year, month, day):
        days = 0
        month_days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
        if is_leap_year(year):
            month_days[1] = 29
        for i in range(1, year):
            year_day = 365
            if is_leap_year(i):
                year_day = 366
            days += year_day
        for m in range(month - 1):
            days += month_days[m]
        days += day
        return days
    
    def get_result(start_time, end_time):
        res = end_time - start_time
        return res
    
    year1, month1, day1 = 2018, 7, 9
    year2, month2, day2 = 2020, 9, 26
    days1 = get_days(year1, month1, day1)
    days2 = get_days(year2, month2, day2)
    day_diff = get_result(days1, days2)
    
    print("两个日期的间隔天数:{} ".format(day_diff))
    
    
    作者:wintest
    本文版权归作者和博客园共有,欢迎转载,但必须在文章页面明显位置给出原文链接,并保留此段声明,否则保留追究法律责任的权利。
  • 相关阅读:
    smartFoxClinet客户端官方中文Doc
    testTrycatch和catch中的应用程序恢复
    这几天做仿豆丁网flash文档阅读器,百度文库阅读器经验总结
    怎么通过生成动态对象名来调用一个对象?
    AS3的Number类型变量不指定初始值,则其初始值为NaN,而不是0.0
    最适合女生的五大紧缺游戏开发职位
    [阻塞和非阻塞]
    网络游戏客户端的日志输出
    我心目中的MMO
    和某游戏猎头的对话
  • 原文地址:https://www.cnblogs.com/wintest/p/13737080.html
Copyright © 2011-2022 走看看