2009年3月14日土曜日

date オブジェクト

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

0 件のコメント:

コメントを投稿