日期問題總結

2021-10-18 22:48:15 字數 1926 閱讀 4454

今天做了乙個關於日期的問題,耗費了不少時間,鑑於之前也做過幾個日期問題,在這裡總結一下。

題目鏈結

**:

(這題對格式要求很嚴,下面的**交上去會格式錯誤,但這不是重點。)

#include

#include

#include

using

namespace std;

int dpm[13]

=;int cy=

2007

,cm=

1,cd=

1,wk=1;

bool

isleap

(int year)

return

false;}

void

date

(int y,

int m)if(

(cy||(cy==y&&cm

}if(cm>12)

}// printf("%d.%d.%d %d\n",cy,cm,cd,wk);

}int

main()

for(

int i=

1; i<

5; i++)}

printf

("---------------------\nsu mo tu we th fr sa\n---------------------\n");

for(

int i=

0; i<

5; i++

)else

printf

(" ");

printf

("\n");

}printf

("---------------------");

return0;

}

個人認為這類問題最煩的就在於各種邊界條件的處理。

1.這種題最常規的思路是用三層迴圈。在第

三、第二層迴圈結束的時候要考慮是否執行第三層迴圈裡面的某些操作。

2.接第一條,如果執行要考慮邊界條件,即在執行之前加一句if(…),防止最後多執行一次。

3.注意跨年、跨月很可能導致重複操作,要進行去重處理。

4.確認正確之前一定要在第三層迴圈內部輸出每一天的日期,如果出現錯誤方便判斷出錯位置和原因。確認後務必刪除該輸出語句再提交。

例題2.

部分**:

int a=

2000

,b=2020

,m=1

,d=1

,hr,nom,mth;

//b:最終年份,a,m,d:當前日期,nom:星期一數,hr:總小時數,mth:總月份數

int k=6;

//k為當前星期數

nom=

(days

(a,b,10,

1)-2

)/7+

1;mth=12*

(b-a)+9

+1; hr=

days

(a,b,10)

+mth+nom;

while

(a

d++;if

(d<=dpm[m]

) k++;if

(k==8)

k=1;

//返回星期一

} m++;if

(m<13)

} a++

; m=d=1;

k++;if

(k==8)

k=1;

}

Python 日期相關問題總結

比如 計算過去兩年 一年 半年 三個月 乙個月內的資料量 計算合同預計簽署日期在未來一年內的資料量 def past24mons time time time.replace past24ago format int datetime.datetime.now strftime y m d 4 2,...

Python 日期總結

usr bin python import time import calendar 時間元組 年 月 日 時 分 秒 一周的第幾日 一年的第幾日 夏令時 一周的第幾日 0 6 一年的第幾日 1 366 夏令時 1,0,1 python中時間日期格式化符號 y 兩位數的年份表示 00 99 y 四位...

問題 A 日期差值

時間限制 1 sec 記憶體限制 32 mb 有兩個日期,求兩個日期之間的天數,如果兩個日期是連續的我們規定他們之間的天數為兩天。有多組資料,每組資料有兩行,分別表示兩個日期,形式為yyyymmdd 每組資料輸出一行,即日期差值 20130101 201301055 includeint month...