日数を求めるための非常に便利な公式

この式は、y 年の m と d と西暦の最初の日 (つまり、1 年 1 月 1 日) の間の日数を計算します。

int get(int y,int m,int d){
    if(m<3){
        --y;
        m+=12;
    }
    return 365*y+y/4 - y/100+y/400+(153*m - 457)/5+d - 306;

導出:

まず、各年の「基本日数」は y*365 日です。

次に、うるう年の影響を考慮します。4 年ごとにうるう年があり、100 年ごとにうるう年が 1 つ減り、さらに 1 日増えます。は 400 年ごとに差し引かれるため、修正された日数は y÷4 − y÷100+y ÷ 400 となります。

最後に、最も厄介な部分ですが、うるう日数に対する 2 月の影響を判断する必要があります。ここにいくつかの式があります: 31+30

+31+30+ 31=153

457−365=92457−365=92

92=31+30+3192=31+30+31

365−31−28=306365−31− 28=306

包含と排他の原則に従って、次の修正を行う必要があります:

( 153*m−457)/5+d−306(153*m−457)/5+d−306 したがって

、最終結果は次のようになります。 :

365*y+y/4−y/100+y/400+(153 ∗m−457)/5+d−306上記の式を使用すると、特定の日付と

西暦初日との日数の差を計算できます。 2 つの日付の差を計算したい場合は、それらを別々に計算して減算するだけです。

おすすめ

転載: blog.csdn.net/m0_74153798/article/details/131789886