※「セキュリティ保護のため...」というメッセージが出る方・日本語が入力できない方へ


(3)経過日数の計算
経過日数の計算はユリウス通日が分かればその引き算で済んでしまいます。
/********************************************************************
経過日数
*******************************************************************/
void DateKeika(long ymd1, long ymd2)
{
return JuliusGetL(ymd2) - JuliusGetL(ymd1);
}
/********************************************************************
日数の加算 ymdに add日を加える
*******************************************************************/
long DateAdd(long ymd, long add)
{
return (JuliusBackL( JuliusGetL(ymd) + add ));
}
しかし日付加算については、更に拡張した下記のようなものを作っておくと
便利です。
/********************************************************************
日数の加算 ymdに ayy年ayy月add日を加える( ayy,amm,addは負でも可)
*******************************************************************/
long DateAdd(long ymd, long ayy, long amm, long add)
{
long yy,mm,dd,k1,k2,jd;
DateSep(ymd, &yy,&mm,&dd);
yy += ayy;
mm += amm;
k1 = mm / 12;
k2 = mm - k1 * 12;
if (k2<0)
{
k1--;
k2+=12;
}
yy += k1;
mm = k2;
jd = JuliusGetL(yy, mm, dd) + add;
return JuliusBackL(jd);
}
経過日数計算にはもうひとつ「営業日数計算」という方式があります。この
場合は会社の定休日/臨時営業日などを処理する必要がありますので「休日
マスタ」を作って処理する必要があります。これに関してはまたの機会に譲
ります。

