Date 関数がv13.3からv13.4で変わった

いいのです。よくあることなのです。

マニュアルにも書いてありました。12月の次が1月であるという保証はない、と。

しかし動いていたんです。v13.3までは。

Date(‘2014/13/1″)

v13.3までは、このコードは2015年1月1日を返してくれていました。それがv13.4でDate関数が大幅に変更になりました。このとき動きがマニュアル通りになりました。13月という月は無いのだと。プログラマが制御せよと。

問題はその月の最後の日を返すところで起こりました。次の月の1日から1日引いて求めます。正解は次です。

C_LONGINT($1;$year)

$year:=$1

C_LONGINT($2;$month)

$month:=$2

C_DATE($0;$date)

$date:=Date(String($year)+”/”+String($month)+”/”+String(1)) //当月の1日

$date:=Add to date($date;0;1;0) //翌月の1日

$date:=Add to date($date;0;0;-1) //当月の末日

$0:=$date