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))


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM