as,
& (結合),
= (等しい),
/= (等しくない)
> (より大きい),
< (より小さい),
>= (以上),
<= (以下)
+ (加算),
- (減算)
class | クラス識別子[r/o] |
値の属するクラス(当然date) | |
year | 整数 |
西暦 | |
month | Janualy / 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以降) | |
weekday | Sunday / 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からの積算秒数) |
変換やリテラルの書式は「日付&時刻」環境設定に依存する。
リテラルを使った場合、別の環境にスクリプトを移したり、構文確認をくり返した時にエラーが出る可能性があるので、安全を期すならば、とりあえず変数に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の方がより古い場合(結果は負の値)はエラーとならない。
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
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
date "12:00:00" of (current date)
date "2015.9.8" of date "06:30:40 pm" of (current date)
set d1 to (current date)
set d2 to d1
set day of d2 to 1
d1
month of (current date) as integer