C語言計算日期間隔天數的經典演算法解析

2021-09-02 22:22:52 字數 914 閱讀 8670

網上看到乙個計算日期間隔的方法,很高深,很巧妙。**如下:

#include

#include

int day_diff(int year_start, int month_start, int day_start

, int year_end, int month_end, int day_end)

int main(void)

演算法解析:

該演算法總體思想是計算給定日期到0年

3月1日的天數,然後相減,獲取天數的間隔。

m1 = (month_start + 9) % 12;

用於判斷日期是否大於3月(

2月是判斷閏年的標識),還用於紀錄到

3月的間隔月數。

y1 = year_start - m1/10;

如果是1月和2

月,則不包括當前年(因為是計算到0年

3月1日的天數)。

d1 = 365*y1 + y1/4 - y1/100 + y1/400 + (m1*306 + 5)/10 + (day_start - 1); 其中

365*y1

是不算閏年多出那一天的天數,

y1/4 - y1/100 + y1/400  

是加所有閏年多出的那一天,

(m2*306 + 5)/10 

用於計算到當前月到3月

1日間的天數,

306=365-31-28(1

月和2月),5

是全年中不是

31天月份的個數

(day_start - 1)

用於計算當前日到

1日的間隔天數。

測試執行結果:

關於Oracle計算日期間隔天數

最近要計算日期間隔天數,測試發現幾個問題,剛開始搜的,有些不太靠譜。1 首先日期不能相加。2 如果要相減,最好去掉時分秒,格式化成年月日,直接相減的話得到的是小數,日期相減底層應該是操作的毫秒級,都帶時分秒的,這樣算天數的時候會精確到時分秒算,特別是用了sysdate,上午和下午執行的天數結果是不一...

PHP程式設計計算日期間隔天數的方法

剛開始在沒有查php手冊的情況下,用比較老套方法也折騰出來了,是這樣子實現的 date 1 date y m d date 2 2012 07 16 date1 arr explode date 1 date2 arr explode date 2 day1 mktime 0,0,0,date1 a...

查詢兩個日期間隔天數怎麼算 職場必備的5個日期函式

本文首發於2019年2月18日,所有文中所有的當天日期均指2019年2月18日。有圖有操作有真相,帶你便捷處理excel中的日期。1.today 獲取當天日期 在單元格中直接輸入 today 即可獲取作業系統日期 還可以計算指定日期離今天還有多少天?2.text 計算星期 要用中文或英文顯示星期,就...