演算子(Operators)

as, & (結合), = (等しい), /= (等しくない)
> (より大きい), < (より小さい), >= (以上), <= (以下)
+ (加算), - (減算)

属性(Properties)

classクラス識別子[r/o]
値の属するクラス(当然date)
year整数
西暦
monthJanualy / February / March / April
May / June / July / August
September / October
November / December
月(10.3以降はas integerで整数を返す、1〜12)
day整数
hours整数
時間(10.4以降)
minutes整数
分(10.4以降)
seconds整数
秒(10.4以降)
weekdaySunday / Monday
Tuesday / Wednesday
Thursday / Friday / Saturday[r/o]
曜日(10.4以降はas integerで整数を返す、日曜から1〜7)
date string文字列
日付(例:"2005年7月3日日曜日"環境設定で異なる)
short date string文字列
短い日付(例:"05-07-03"環境設定で異なる)(10.3以降)
time string文字列
時間(例:"1:41:26 PM"環境設定で異なる)
time整数
時刻(0:00からの積算秒数)

解説(Note)

 変換やリテラルの書式は「日付&時刻」環境設定に依存する。
 リテラルを使った場合、別の環境にスクリプトを移したり、構文確認をくり返した時にエラーが出る可能性があるので、安全を期すならば、とりあえず変数にcurrent dateを代入し、その変数の属性を変更して日付や時刻の設定をおこなうという、七面倒なやりかたを取る必要がある。
 完全な書式に足りない部分は、日付は今日を、時刻は0時丁度を補完し、設定する。

 値の範囲は、1000年1月1日〜9999年12月31日までで、それ以外の日付は適当に変換される(例えば98年は1998年に変換される)

 月のクラスは、定数(constant)ではなくクラス識別子(class)である。数字で扱いたいときは、名前と数字で変換してやる必要があり、非常に面倒。変換は下の例を参照してほしい。曜日についても同様である。
 ただし、monthはMac OS X10.3以降、weekdayは10.4以降、as integerで整数に変換することができる。
 曜日は一見設定可能だが、日付の値は変化しない。
 月を設定したときに、日付が存在しない月の場合、次の月に繰り越される。例えば元の値が31日であった場合に4月(April)を指定すると、5月1日になる。

 date "..." of 日付と書くことで、指定した日付を元にして、新たに日付の値を作ることができる(例3,4)これも一部の書式が環境設定に依存するので、常に使用可能な訳では無い。

 AppleScriptには、秒数の計算のために変数が定義されている。詳しくは日付変数(date variables)を参照してほしい。
 Mac OS X10.4になって、hours、minutes、seconds属性がついたので、断然楽になった。

 秒より下の時間は扱えないので、きめ細かな処理はできない。
 as演算子によって、一項目のリスト、文字列へ変換できる。
 比較演算子を使う場合、後の時刻のほうが大きいとされる。
 秒数を使った演算が行える、詳しくは+ (加算), - (減算)を参照してほしい。

 setを使うことによって、変数の一部を共有し、C言語などのポインタ的に使うことができる(例5)

【バグ情報】
 1904年より前の値どうしで、日付1-日付2の計算を行うとエラーが発生する。ただし、日付1の方がより古い場合(結果は負の値)はエラーとならない。

用例(Example)

  1. set Xday to current date
    set month of Xday to item 1 of {January, February, March, April, May, June, July, August, September, October, November, December}
    Xday
  2. set Xweekday to weekday of (current date)
    repeat with i from 1 to 7
    	if Xweekday = item i of {Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday} then exit repeat
    end repeat
    i
  3. date "12:00:00" of (current date)
  4. date "2015.9.8" of date "06:30:40 pm" of (current date)
  5. set d1 to (current date)
    set d2 to d1
    set day of d2 to 1
    d1
  6. month of  (current date) as integer

※1〜6 結果ウィンドウでResultを見て下さい。
6は、Mac OS X10.3以降可能。