2008年11月09日

カレンダー計算のコア部分

■日付の算出方法

例えば2008年11月のカレンダーを計算するとします。
「日付選択」フィールド(グローバル、日付)に [ 2008/11/1 ] というデータを入れるとします。

カレンダーが日曜日スタートだとして、
「first_day」フィールド(計算、日付):

Case (
DayName ( Date ( Month ( 日付選択 ) ; 1 ; Year ( 日付選択 ) ) ) = "sunday" ;
Date ( Month ( 日付選択 ) ; 1 ; Year ( 日付選択 ) ) ;
DayName ( Date ( Month ( 日付選択 ) ; 1 ; Year ( 日付選択 ) ) ) = "monday" ;
Date ( Month ( 日付選択 ) ; 1 ; Year ( 日付選択 ) ) - 1 ;
DayName ( Date ( Month ( 日付選択 ) ; 1 ; Year ( 日付選択 ) ) ) = "tuesday" ;
Date ( Month ( 日付選択 ) ; 1 ; Year ( 日付選択 ) ) - 2 ;
DayName ( Date ( Month ( 日付選択 ) ; 1 ; Year ( 日付選択 ) ) ) = "wednesday" ;
Date ( Month ( 日付選択 ) ; 1 ; Year ( 日付選択 ) ) - 3 ;
DayName ( Date ( Month ( 日付選択 ) ; 1 ; Year ( 日付選択 ) ) ) = "thursday" ;
Date ( Month ( 日付選択 ) ; 1 ; Year ( 日付選択 ) ) - 4 ;
DayName ( Date ( Month ( 日付選択 ) ; 1 ; Year ( 日付選択 ) ) ) = "friday" ;
Date ( Month ( 日付選択 ) ; 1 ; Year ( 日付選択 ) ) - 5 ;
DayName ( Date ( Month ( 日付選択 ) ; 1 ; Year ( 日付選択 ) ) ) = "saturday" ;
Date ( Month ( 日付選択 ) ; 1 ; Year ( 日付選択 ) ) - 6 ;
Date ( Month ( 日付選択 ) ; 1 ; Year ( 日付選択 ) ) )

これでカレンダー上の最初の日が出てきます。
2008/11/01は土曜日ですから、その6日前、[ 2008/10/26 ] と算出されるというわけです。

次に6週間分の日曜日を算出します。

Case (
Get ( レコード番号 ) = 1 ; first_day ;
Get ( レコード番号 ) = 2 ; first_day + 7 ;
Get ( レコード番号 ) = 3 ; first_day + 14 ;
Get ( レコード番号 ) = 4 ; first_day + 21 ;
Get ( レコード番号 ) = 5 ; first_day + 28 ;
Get ( レコード番号 ) = 6 ; first_day + 35 ;
"")

これで、
[ 2008/10/26 ]
[ 2008/11/02 ]
[ 2008/11/09 ]
[ 2008/11/16 ]
[ 2008/11/23 ]
[ 2008/11/30 ]
が出てきました。

月曜日は簡単です。

日曜日 + 1

だけ。火曜日は「+2」、水曜日は「+3」……となります。




タグ:filemaker
posted by tk219 at 18:48 | Comment(0) | TrackBack(0) | ファイルメーカー | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。