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) | ファイルメーカー | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

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