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
    本文版权归作者和博客园共有,欢迎转载,但必须在文章页面明显位置给出原文链接,并保留此段声明,否则保留追究法律责任的权利。
  • 相关阅读:
    Redis源代码分析(十三)--- redis-benchmark性能測试
    kvm中运行kvm
    umount.nfs device busy day virsh extend diskSpace, attachDisk
    ultravnc
    openNebula dubug
    maintenance ShellScripts
    virsh VMI deploy data serial xml
    cloud computing platform,virtual authentication encryption
    基于C 的libvirt 接口调用
    storage theory
  • 原文地址:https://www.cnblogs.com/wintest/p/13737080.html
Copyright © 2011-2022 走看看