Tips

指定月の末尾の日にちを求める

日付2003/12/18
ID30736 (英語原文参照)
バージョン2003.2
プラットフォームMac & Win

この記事は、最新ではないバージョンに関連した方法について解説しています。

最新のバージョンでは推奨されていないか、または他の方法で簡単に実現できる可能性があります。

与えられた月の日付から、その月の日数の最大値を返す、単純なメソッドがあります。

C_DATE($1)
C_LONGINT($0;$month;$year)

$month:=Month of($1)
$year:=Year of($1)

Case of
 ¥($month=1)
  $0:=31
 ¥($month=2)
  If (Dec($year/4)>0)
   $0:=28
  Else
   $0:=29
  End if
 ¥($month=3)
  $0:=31
 ¥($month=4)
  $0:=30
 ¥($month=5)
  $0:=31
 ¥($month=6)
  $0:=30
 ¥($month=7)
  $0:=31
 ¥($month=8)
  $0:=31
 ¥($month=9)
  $0:=30
 ¥($month=10)
  $0:=30
 ¥($month=11)
  $0:=30
 ¥($month=12)
  $0:=31
End case

■■■訳者注■■■
上記メソッドは、うるう年による2月の末尾を単純計算により行っているため、正確ではない。
よりシンプルに書くならば、Add to date関数を使用することをお薦めする。

C_DATE($1;$d)
C_LONGINT($0)

$d:=$1
$d:=Add to date($d;0;1;-Day of($d)) `指定月の月末日
$0:=Day of($d)


※補足:月末日は、月+1したあとに、日数を-1をすることで求めることができる。一般的には、末尾の日数だけを返すよりは、末日の日付を返す以下の様なメソッドの方が汎用駅に使えると思われる。

C_DATE($1;$d)
C_LONGINT($0)

$d:=$1
$d:=Add to date($d;0;1;-Day of($d)) `指定月の月末日
$0:=$d