網上看到乙個計算日期間隔的方法,很高深,很巧妙。**如下:
#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 計算星期 要用中文或英文顯示星期,就...