date オブジェクトのリファレンスがどこにもないので、判明している点についてのメモ書きです。
date オブジェクトの作成方法
make new date with properties { ... }
でうまく作成できません。
次のように作成します。
set s to "2009-03-14 13:05:49"
date s -- should be date "2009年 3月 14日 土曜日 1:05:49 PM"
日付だけでも OK
set s to "2009-03-14"
date s -- should be date "2009年 3月 14日 土曜日 0:00:00 AM"
プロパティ
判明しているプロパティは以下の通り。時・分・秒は取れないとしている資料がありますが、現行バージョンでは取れます。
year of (current date) -- 年
month of (current date) -- 月
month of (current date) as integer -- 月 (数字)
day of (current date) -- 日
weekday of (current date) -- 曜日
weekday of (current date) as integer
-- 曜日 (数字: 1. Sunday .. 7. Saturday)
hours of (current date) -- 時
minutes of (current date) -- 分
seconds of (current date) -- 秒
time of (current date) -- 0:00:00 AM からの経過秒数
month of は数字を使って書き換えても大丈夫。
set d to date "2009年 3月 1日 日曜日 0:00:00 AM"
set month of d to 4
d -- should be date "2009年 4月 1日 水曜日 0:00:00 AM"
日付に関する計算
date オブジェクトに対して、秒単位で加減算をすることで、n 秒前、n 秒後の日付を得ることができます。
set d1 to date "2008年 2月 29日 金曜日 0:00:00 AM"
set d1 to d1 + 60 * 60 * 24 * 10 -- 10日後
d1 -- should be date "2008年 3月 11日 火曜日 0:00:00 AM"
set d2 to date "2008年 2月 29日 金曜日 0:00:00 AM"
set d2 to d2 - 60 * 60 * 24 * 10 -- 10日前
d2 -- should be date "2008年 2月 19日 火曜日 0:00:00 AM"
日の加算はうまく行くようです。n日後とかを計算するのに便利です。
set d to date "2008年 2月 29日 金曜日 0:00:00 AM"
set day of d to (day of d) + 1 -- 1日後
d -- should be date "2008年 3月 1日 土曜日 0:00:00 AM"
day of に 32日 を設定しても大丈夫です。
set d to date "2008年 3月 31日 月曜日 0:00:00 AM"
set day of d to (day of d) + 1 -- 1日後
d -- should be date "2008年 4月 1日 火曜日 0:00:00 AM"
day of に 0 や マイナスの数値を設定するとエラーになります。n 日前を指定する時は、前述の秒単位の減算を使います。
set d to date "2009年 3月 1日 日曜日 0:00:00 AM"
set day of d to (day of d) - 1 -- 1日前
時間に関する計算
日付のように、各プロパティに関する設定はできないので、time of で計算します。
set d to date "2009年 3月 1日 日曜日 0:00:00 AM"
set time of d to (time of d) + 3600 -- 3600秒 (1時間後)
d -- shold be date "2009年 3月 1日 日曜日 1:00:00 AM"
オーバーフローしても大丈夫。
set d to date "2009年 3月 1日 日曜日 11:53:00 PM"
set time of d to (time of d) + 3600 -- 3600秒 (1時間後)
d -- shold be date "2009年 3月 2日 月曜日 0:53:00 AM"
time of に 0 や マイナスの数値を設定するとエラーになります。n 秒前を指定する時は、前述の秒単位の減算を使います。
set d to date "2009年 3月 1日 日曜日 0:00:00 AM"
set time of d to (time of d) - 1
日付の比較
日付はちゃんと比較できます。
set d1 to date "2009年 3月 14日 土曜日 0:00:00 AM"
set d2 to date "2008年 3月 14日 金曜日 0:00:00 AM"
d1 > d2