PHPで書かれていたものの移植です。y年m月の第nd曜日の date オブジェクトを返します。
-- y年m月の第nd曜日の date オブジェクトを返す。
on getWhatDayOfWeek(y, m, n, d)
-- 指定した年月の1日の曜日を取得
set f to current date
set year of f to y
set month of f to m
set day of f to 1
set dd to d - (weekday of f) + 1
-- 1週間を足す
if dd ≤ 0 then
set dd to dd + 7
end if
set day of f to dd
-- 第n曜日まで1週間を足し込み
set day of f to (day of f) + (n - 1) * 7
return f
end getWhatDayOfWeek
。例えば、2009年 4月の第二水曜日を得る場合は、以下のように使います。
my getWhatDayOfWeek(2009, 4, 2, Wednesday)
すると、以下のような date オブジェクトが返ります。時刻は無視してください。
date "2009年 4月 8日 水曜日 10:44:00 AM"
なお、valid でない日付を指定した場合でもそれなりに動いてしまいます。例えば、2009年 13月は2010年 1月と読み替えられます。また、2009年 4月の第5金曜日は 2009年 5月 1日が返ります。意図した結果となっているかどうかは、呼び出す側で確認してください。
0 件のコメント:
コメントを投稿