計算兩個日期到0001年01月01日的距離然後再相加
問題出在年轉換為日的部分
int year = y*365 + y/4 - y/100 + y/400;
雖然依照閏年平年的標準這樣寫沒錯
但是你要知道這樣直接算的話,算到的實際上是隔年的同一天
以2020/07/01為例
2020*365-505+20-5,但這個天數會是「2020整年過完的天數」,繼續計算月和日下去會算成2021年的7/1
所以其實算年份要用(y-1)
int year = (y - 1) * 365 + (y - 1) / 4 - (y - 1) / 100 + (y - 1) / 400;
月份和日一般就沒什麼問題
這邊是程式碼: