計算兩個日期之間的天數 C

2022-03-12 18:05:58 字數 1770 閱讀 8094

//曆法規定,四年一閏,四百年閏,例如2023年是閏年,2023年不閏年,

//公曆年份是整百數的,必須是400的倍數的才是閏年,不是400的倍數的就是平年

//計算兩個日期之間的天數(c++)

//定義變數year1, month1, day1, year2, month2, day2

//取出2個日期中的年 月 日

//如果年相同,月也相同

//return day1- day2

/*問題: 給你兩個日期(如"2010-04-13"和"1988-10-24"),求它們之間相差的天數

分析: 這是一年看似簡單,實際上卻有點複雜的小問題,首先你要考慮到月大月小的問題,其次你要考慮到閏年的問題

當然,你也要檢測一下,給定的日期格式是否合法,對這個問題的解法,寫出偽**如下

定義變數year1, month1, day1, year2, month2, day2

取出2個日期中的 年 月 日

如果年相同,月也相同:

return | day1 - day2

如果年相同,月不同:

d1 = date1是該年的第幾天

d2 = date2是該年的第幾天

return | d1 - d2

如果年份不同:

d1 = 年份小的日期,離年低還有多少天

d2 = 年份大的日期是這年的第幾天

d3 = 兩個日期之間相差多少個整年,共有多少天

return d1 + d2 + d3

上面的偽**使用者c++實現如下:

*/

#include using namespace std;

//isleap函式判斷乙個年份是否為閏年,方法如下:

bool isleap(int year)

//上面的stringtodate函式用於取出日期中的年月日並判斷日期是否合法

//從字元中最得年月日 規定日期的格式是yyyy-mm-dd

bool stringtodate(string date, int& year, int& month, int& day)

; if(isleap(year))

return year >= 0 && month<=12 && month>0 && day<=day[month] && day>0;

}//dayinyear能根據給定的日期,求出它在該年的第幾天,**如下

int dayinyear(int year, int month, int day)

; if(isleap(year))

day[1] = 29;

for(int i=0; iday2 ? day1 - day2 : day2 - day1;

//如果年相同

}else if(year1 == year2)

else

int d1,d2,d3;

if(isleap(year1))

d1 = 366 - dayinyear(year1,month1, day1); //取得這個日期在該年還於下多少天

else

d1 = 365 - dayinyear(year1,month1, day1);

d2 = dayinyear(year2,month2,day2); //取得在當年中的第幾天

cout<<"d1:"

for(int year = year1 + 1; year < year2; year++)

return d1 + d2 + d3;

}}int main()

計算兩個日期之間的天數

問題描述 給定兩個日期,計算相差的天數。比如2010 1 1和2010 1 3相差2天。時間限制 1000 記憶體限制 65536 輸入共兩行 第一行包含三個整數startyear,startmonth,startday,分別是起始年 月 日。第二行包含三個整數endyear,endmonth,en...

c 計算兩個日期之間的天數差

有兩個日期,求兩個日期之間的天數,如果兩個日期是連續的,我們規定他們之間的天數為兩天。輸入形式為yyyymmdd,例如 20110412 20110422 輸出為 11 include define isyeap x x 100 0 x 4 0 x 400 0?1 0 定義巨集判斷是否是閏年,方便計...

C 計算任意兩個日期之間的天數

c 寫的乙個計算兩個日期之間天數的小程式 cpp view plain copy include include struct tagdate 設定日期 void setdate int y,int m,int d,tagdate date 是否閏年 int isleapyear int year ...