SenseTalkにおける日付および時刻値
SenseTalkには、日付および時刻を扱うためのコマンドと関数があります。日付/時刻は、マイナス(-)演算子を使って別の日付/時刻から減算し、その差を秒単位で得たり、 時間間隔を加算して、新しい日付/時刻値を得たりすることができます(時間間隔の加算と減算を参照)。
日付、時刻、時間間隔
SenseTalkでは、「日付」と「時刻」の間に根本的な区別はありません。どちらも、時間の流れの中の明確な瞬間、すなわち2001年1月1日午前0時ちょうど(協定世界時)を起点(ゼロ値)としたタイムライン上の点として扱われます。起点の瞬間より前の日付/時刻は内部的には負の値として扱われ、以後の日付/時刻は起点からの秒数を示す正の値として扱われます。
SenseTalkは、「4/22/67」や「1967-04-22 18:00」など、幅広いフォーマットで表現された日付や時刻を認識することができます。詳細については、the timeInputFormatグローバルプロパティをご覧ください。Naturalフォーマットを使うと、「May 15, 2004 10:57 PM」といった形や、さらには「yesterday」、「today」または「next Tuesday in the afternoon」といった形にまで、そのバリエーションを広げることができます。todayおよびnowという語(引用符なし)は、現在の日付または現在の日付と時刻を指すのに使用できます(ただし、これらが変数として使われ、何らかの別の値が割り当てられている場合を除きます)。このフォーマットに関する詳細は、下のNaturalフォーマットをご覧ください。
日付値を時刻なしで与えると、その日の正午を指していると見なされ、 時刻を日付なしで与えると、現在の日付(今日)のその時刻を指していると見なされます。すべての日付および時刻は、スクリプトが実行されているマシンに現在設定されているローカルタイムゾーン内のものと想定されます。
時間間隔は時間の長さです。SenseTalkは、時間間隔を常に秒単位で測定しますが、時間をより自然な形で表現しやすいように、weeks、days、hoursなどの語による時間間隔表現を提供しています(値の時間間隔を参照)。時間間隔をagoおよびhence演算子と一緒に使うと、特定の時間の長さだけ過去または未来の時刻値を生成することができます。
ほとんどのSenseTalk日付/時刻関数が返す値は、単に時間点の表現であるだけでなく、時間フォーマットも内包しています。このような「フォーマット済み日付/時刻値」の強みは、日付/時刻算術計算の実行時に同フォーマットを保持する点にあります。
注:日付と時刻の間に実際の違いがないため、このドキュメントでは日付または時刻のいずれかを「日付/時刻値」として言い表す場合があります。
関連するグローバルプロパティとローカルプロパティ
SenseTalkには、スクリプト内で日付および時刻値の振る舞いに作用できるグローバルプロパティまたはローカルプロパティがいくつかあります。以降の概念説明には、こうしたプロパティも登場してきます。各プロパティの完全な定義を確認するには、値の扱いに関するローカルプロパティとグローバルプロパティをご覧ください。具体的なプロパティは次のとおりです。
日付/時刻の算術計算
時間間隔の加算および減算
任意の日付(または時刻)を始点として、時間間隔を加算または減算するだけで、異なる日付/時刻を得ることができます。
例:
put today + 2 weeks into dueDate
例:
subtract 3 hours 14 minutes 22 seconds from timer
日付/時刻差の計算
ある日付/時刻から別の日付/時刻を減算すると、日付間の日数または何らかのプロセスの経過時間を容易に計算することができます。その差は、常に秒で表される時間間隔ですが、別の単位(日数など)の秒数(例えば、1 dayといった時間間隔表現で表現可能)で割ることにより、その別の単位に変換することができます。
例:
put (expirationDate - "today") / 1 day into daysRemaining
例:
put the time into startTime -- ここから時間の測定を開始します
例:
run "somethingTimeConsuming" -- 時間測定対象の処理をします
例:
put the time - startTime into secondsElapsed
日付/時刻の比較
SenseTalk比較演算子(「is」、「=」、「comes before」、「<」など)は、通常、比較対象の2値をテキストとして扱います。ただし、両方の値が数値である、または日付/時刻値であることが「分かっている」場合は別です。通常の比較で値がテキストとして扱われるため、下記から生成される結果は希望のとおりになりません。
if the date is between "Sep 21" and "Dec 21" then put "Happy Autumn"
SenseTalkに日付/時刻比較を行わせるには、date()またはtime()関数を使ってテキストを日付/時刻の内部表現に変換します。これで、希望の結果が得られます(注:年を指定しないと、現在の年が想定されるため、次の例はどの年でも機能します)。
if the date is between date("Sep 21") and date("Dec 21") then
put "Happy Autumn!"
end if
date、asDate関数
挙動:現在の日付、または与えられた式の日付値を返します。long date関数は、現在の曜日や省略しない月名を含んだ、言葉数の多い形態の日付を返します。Abbreviated dateおよびshort date関数は、それ以外のフォーマットの日付を返します。date関数の戻り値は、テキストに変換されると、下の例のように、フォーマットされた日付を自動的に表示します。戻り値は、日付/時刻計算で使用するために、関数呼び出し時の正確な日時を表す数値として扱うこともできます。日付式を与えると、その日の正午を表す値が返されます(日付式に時刻が含まれていても無視されます)。
asDate関数もまた、日付式で与えられた値を日付に変換するものですが、asDate関数では、標準的な日付フォーマットを割り当てる代わりに、日付式自体のフォーマット方法からフォーマットを導き出します。asDate関数は、as {a} date演算子を使って呼び出すことも可能です。
構文:
the { [ long | short | abbr{ev{iated}} ] } date {of 日付式}
date(日付式)
asDate(日付式)
例:
put the date -- "10/07/95"
例:
put the short date -- "10/7/95"
例:
put the abbrev date -- "Sat, Oct 7, 1995"
例:
put the long date -- "Saturday, October 7, 1995"
例:
put date("May 14, 1942") -- "05/14/42"
例:
put asDate("May 14, 1942") -- "May 14, 1942"
関連:
dateItems関数
挙動:いずれかのdateItemsフォーマットを用いて、現在の日付、または与えられた式の日付値を返します。dateItemsフォーマットは、コンマで区切られたテキストリストとして日付および時刻を表すものです。short dateitemsが返すのは、年、月、日、時、分、秒の6アイテムです。dateitems(形容詞なし)が返すのは、7つ目に曜日(日曜を0として0~6)を加えた7アイテムです。abbreviated dateitemsでは、タイムゾーンのオフセットがHHMMフォーマットで追加され、long dateitemsでは、同じ情報がオフセットではなくタイムゾーン名で返されます。dateitems関数の戻り値は、テキストに変換されると、フォーマットされた日付を自動的に表示します。戻り値は、日付/時刻計算で使用するために、関数呼び出し時の正確な日時を表す数値として扱うこともできます。
構文:
the { [ long | short | abbr{ev{iated}} ] } dateitems {of 日付式}
dateitems(日付式)
例:
put the dateitems -- "1995,10,07,17,50,22,6"
例:
put the short dateitems -- "1995,10,07,17,50,22"
例:
put the abbrev dateitems -- "1995,10,07,17,50,22,6,-0600"
例:
put the long dateitems -- "1995,10,07,17,50,22,6,America/Denver"
例:
put dateitems("May 14, 1942") -- "1942,05,14,12,00,00,4"
関連:
UTCOffset(またはsecondsFromGMT)関数
挙動:現在のローカル時刻と協定世界時(UTC)との間の差を秒単位で返します(シノニムであるsecondsFromGMTは旧来の用語であるグリニッジ標準時(GMT)を指します)。1つの日付パラメータを使って呼び出された場合、その日付におけるUTCとローカルとの差を返します(その日付においてサマータイムが有効になっているかどうかで異なってくる場合があります)。
構文:
the UTCOffset {of 日付}
UTCOffset(日付)
例:
put the UTCOffset -- 「-25200」を返します(MSTにて)
例:
put UTCOffset("June 4, 2001") / 1 hour -- -6を返します
seconds関数
挙動:2001年1月1日から現在までの秒数を返します。long seconds関数は、現在の秒の小数部を含んだ、より正確な秒数を返します。他にもAbbreviated secondsおよびshort seconds関数が利用できます。これらの関数は、値をそれぞれマイクロ秒(小数第6位)とミリ秒(小数第3位)に丸めた形で与えます。日付時刻値を与えると、2001年1月1日からその日時までの秒数が返されます(2001年以前の日時を与えると、負の数値になります)。
構文:
the { [ long | short | abbr{ev{iated}} ] } seconds
the seconds of 日付時刻値
seconds( {日付時刻値} )
例:
put the seconds -- 62899676
例:
put the long seconds -- 62899676.90865231
関連:
ticks関数
挙動:SenseTalkエンジンが起動してからのtick数(1/60秒)を返します。
構文:
the ticks
ticks()
例:
if the ticks is greater than 36000 then
put "SenseTalk was started more than 10 minutes ago."
end if
関連:
time、asTime関数
挙動:現在の時刻、または与えられた式の時刻値を返します。long time関数は、秒数を含めた長い形の時刻を返します。Abbreviated timeおよびshort time関数は、それ以外のフォーマットの時刻を返します。
構文:
the { [ long | short | abbr{ev{iated}} ] } time {of 時刻式}
time(時刻式)
asTime(時刻式)
例:
put the time -- 「02:38 PM」を表示します
例:
put the short time -- 「02:38」を表示します
例:
put the abbrev time -- 「02:38:32」を表示します
例:
put the long time -- 「02:38:32 PM」を表示します
例:
put time("7:35:42") -- 「07:35 AM」を表示します
例:
put asTime("7:35:42") -- 「07:35:42」を表示します
技術トピック
time関数の戻り値は、テキストに変換されると、上の例のように、フォーマットされた時刻を自動的に表示します。戻り値は、日付/時刻の計算または比較で使用するために、関数呼び出し時の正確な日時(またはパラメータで表現された正確な日時)を表す数値として扱うこともできます。
the clockFormatグローバルプロパティが「24 hour」に設定されている場合、あらゆるtime関数で使用されるフォーマットに「AM」や「PM」は含まれなくなり、代わりに時間が00~23で示されます。
時刻式を与えると、その値が時刻の内部表現として評価され、返されます。この用法では、asTimeという名前で呼び出すこともできます。これにより、他の変換関数との一貫性が保たれます。
asTime関数もまた、時刻式で与えられた値を時刻に変換するものですが、asTime関数では、標準的な時刻フォーマットを割り当てる代わりに、時刻式自体のフォーマット方法からフォーマットを導き出します。asTime関数は、as {a} time演算子を使って呼び出すことも可能です。
関連:
year関数
挙動:与えられた日付の年の数字、または現在の年を返します。
構文:
the year {of 日付時刻値}
year(日付時刻値)
例:
put the year into currentYear
例:
put year("4 July 1776") -- "1776"
関連:
month関数
挙動:与えられた日付または現在の月の数字(1~12)を返します。
構文:
the month {of 日付時刻値}
month(日付時刻値)
例:
put the month into monthNum
例:
put month("4 July 1776") -- "7"
関連:
day関数
挙動:与えられた日付または現在の日の数字(1~31)を返します。
構文:
the day {of 日付時刻値}
day(日付時刻値)
例:
put day() into dayNum
例:
put the day of "4 July 1776" -- "4"
関連:
dayOfWeek関数
挙動:与えられた日付または現在の日付の曜日番号(0~6)を返します。番号0は日曜日を表します。
構文:
the dayOfWeek {of 日付時刻値}
dayOfWeek(日付時刻値)
例:
put dayOfWeek() into weekdayNum
例:
put the dayOfWeek of "4 July 1776" -- 「4」(木曜日)
関連:
dayOfYear関数
挙動:与えられた日付または現在の日付の通年の日番号(1~366)を返します。
構文:
the dayOfYear {of 日付時刻値}
dayOfYear(日付時刻値)
例:
put dayOfYear() into dayNum
例:
put the dayOfYear of "4 July 1776" -- 「186」(その年の186日目)
関連:
dayOfCommonEra関数
挙動:与えられた日付または現在の日付の、共通紀元(西暦1年1月1日)からの日数を返します。この関数は、2つの日付間の経過日数を計算するときに便利です。
構文:
the dayOfCommonEra {of 日付時刻値}
dayOfCommonEra(日付時刻値)
例:
put the dayOfCommonEra into todayNum
例:
put dayOfCommonEra("4 July 1776") -- 「648491」を表示します
例:
put "The U.S. has been independent for " & \
dayOfCommonEra() - dayOfCommonEra("4 July 1776") & " days"
関連:
hour関数
挙動:与えられた時刻値または現在の時間の時間数(0~23)を返します。
構文:
the hour {of 日付時刻値}
hour(日付時刻値)
例:
put the hour into hourNum
例:
put hour("5:37:22 PM") -- "17"
関連:
minute関数
挙動:与えられた時刻値または現在の時間の分の数字(0~59)を返します。
構文:
the minute {of 日付時刻値}
minute(日付時刻値)
例:
put minute() into minutesPastTheHour
例:
put the minute of "5:37:22 PM" -- "37"
関連:
second関数
挙動:与えられた時刻値または現在の時間の秒数(0~59)を返します。
構文:
the second {of 日付時刻値}
second(日付時刻値)
例:
put the second into currentSecondNumber
例:
put second("5:37:22 PM") -- "22"
注:second()関数によって返される値は常に0~59です。これが、2001年1月1日からの秒数を返すseconds()関数とは全く異なる点です。
関連:
millisecond、microsecond関数
挙動:millisecond()関数は、現在の時刻または与えられた時刻値のミリ秒(1秒の千分の1)を示す数字(0~999)を返します。microsecond()関数は、現在の時刻または与えられた時刻値のマイクロ秒(1秒の百万分の1)を示す数字(0~999999)を返します。
構文:
the millisecond {of 日付時刻値}
millisecond(日付時刻値)
the microsecond {of 日付時刻値}
microsecond(日付時刻値)
例:
put millisecond() into currentMillisecond
例:
put the millisecond of startTime
例:
set tempName to the hour & the minute & the second & the microsecond
例:
put microsecond(previousTime)
関連:
convertコマンド
挙動:convertコマンドは、日付/時刻値を異なる日付および/または時刻フォーマットに変換します。変換される元の値がコンテナの場合、そのコンテナの中身が変換後の値で置き換えられます。そうでなければ、変数itに結果が格納されます。
どちらの場合も(いずれかの「seconds」フォーマットに変換した場合を除く)、内部の結果の値はリクエストしたフォーマットを備えた日付/時刻値になります。これにより、同フォーマットを保持しながら、結果から時間間隔を減算または加算することが可能になります。使用される実際のフォーマットは、the timeFormatグローバルプロパティで定義されており、必要であればこれを変更することもできます。「seconds」フォーマット類については、the timeFormatに対応の値がないため、seconds、long seconds他に変換すると、結果はフォーマット済みの時刻値ではなく固定文字列になります。
構文:
convert ソース to フォーマット {and フォーマット}
例:
convert "8/14/02" to long date -- 「it」の値を設定します
例:
convert the time to short date and time -- 「it」の値を設定します
例:
convert expirationDate to date -- expirationDateの値を変更します
例:
convert line 2 of file "/tmp/resultLog" to abbreviated local time
有効なフォーマット |
値の例 |
date |
11/09/04 |
short date |
11/9/04 |
long date |
Tuesday, November 9, 2004 |
abbreviated date |
Tue, Nov 9, 2004 |
time |
03:17 PM |
short time |
03:17 |
long time |
03:17:25 PM |
abbreviated time |
03:17:25 |
local time |
03:17 PM America/Denver |
short local time |
03:17 PM -0700 |
long local time |
03:17:25 PM America/Denver |
abbreviated local time |
03:17:25 PM -0700 |
dateitems |
2004,11,09,15,17,25,2 |
short dateitems |
2004,11,09,15,17,25 |
long dateitems |
2004,11,09,15,17,25,2,America/Denver |
abbreviated dateitems |
2004,11,09,15,17,25,2,-0700 |
simple date |
11/09 |
short simple date |
11/9 |
long simple date |
November 9 |
abbreviated simple date |
Nov 9 |
basic date |
Nov 9, 2004 |
short basic date |
Nov 9 04 |
long basic date |
November 9, 2004 |
abbreviated basic date |
November 9 04 |
basic time |
Nov 9, 2004 03:20 PM |
short basic time |
Nov 9 04 3:20 PM |
long basic time |
November 9, 2004 03:20:26 PM |
abbreviated basic time |
November 9 04 03:20:26 PM |
common date |
9 Nov 2004 |
short common date |
9 Nov 04 |
long common date |
09 November 2004 |
abbreviated common date |
09 Nov 2004 |
common time |
9 Nov 2004 08:29 AM |
short common time |
9 Nov 04 08:29 AM |
long common time |
09 November 2004 08:29 AM |
abbreviated common time |
09 Nov 2004 08:29 AM |
C time |
Tue Nov 9 15:32:28 2004 |
short C time |
Nov 9 15:32 2004 |
long C time |
Tuesday November 9 15:32:28 2004 |
abbreviated C time |
Nov 9 15:32:28 2004 |
international date |
2004-11-09 |
short international date |
2004-11 |
long international date |
2004-11-09 |
abbreviated international date |
2004-11 |
international time |
2004-11-09T08:29:25-0700 |
short international time |
2004-11-09T08:29-0700 |
long international time |
2004-11-09T08:29:25.894-0700 |
abbreviated international time |
2004-11-09 08:29:25 -0700 |
internet date |
Tue, 9 Nov 2004 08:29:25 -0700 |
short internet date |
9 Nov 2004 08:29 -0700 |
long internet date |
Tuesday, 9 November 2004 08:29:25 -0700 |
abbreviated internet date |
9 Nov 2004 08:29:25 -0700 |
seconds |
121732349 |
long seconds |
121732348.572803789 |
abbreviated seconds |
121732348.572804 |
short seconds |
121732348.573 |
the clockFormatグローバルプロパティが「24 hour」に設定されている場合、すべての時刻フォーマットは、「AM」や「PM」(例、「03:17 PM」)の代わりに24時間表記のクロックフォーマット(例、「15:17」)を使用します。このプロパティについての詳細は、値の扱いに関するグローバルプロパティとローカルプロパティをご覧ください。
dateitemsフォーマットは、カレンダー日付を扱う際に特に便利です。dateitemsフォーマットで表される日付/時刻は、コンマで区切られた7つの数値、すなわち年、月、日、時、分、秒、曜日(0が日曜日、6が土曜日)を表す数値で成り立っています。long dateitemsおよびabbreviated dateitemsフォーマットには、タイムゾーン情報も含まれます。short dateitemsの場合は、曜日が省略されます。
SenseTalkでは、長さが一定ではないため、月または年に対応した時間間隔表現は提供されていません。あるカレンダー日付からある年数分または月数分だけ離れたカレンダー日付を計算するには、日付をdateitemsに変換し、目的のアイテムの加算または減算を行った上で元通りに変換するやり方が可能です。例えば以下のスクリプトでは、18か月先の、現在の日付と同じ日番号(月内)の日付を設定しています。
put the date into futureDate -- まずは今日の日付を扱います
convert futureDate to dateItems
add 18 to item 2 of futureDate -- アイテム2は月に当たります
convert futureDate to long date -- より分かりやすいフォーマットに戻します
以下のcalculateAge関数の例は、さらに複雑です。これは、前にヘルパーのところで取り上げた年齢計算の関数に類似していますが、 こちらの方が、うるう年の扱いにおいて優れています。
function calculateAge birthDate -- 与えられたbirthDate(誕生日)で年齢を計算します
convert birthDate to dateItems -- 年、月、日、時、分、秒に変換します
split birthDate by comma -- リストに変換します
convert the date to dateItems -- 今日の日付を「it」内にdateItemsとして表します
split it by comma-- リストに変換します
subtract birthDate from it -- 一方の値リストを他方の値リストから減算します -- 今日の日番号(月内)が誕生日の日番号よりも小さい場合は次のように月を減算します
if item 3 of it < 0 then subtract 1 from item 2 of it -- その上で今日の月番号が誕生日の月番号よりも小さい場合は次のように年を減算します
if item 2 of it < 0 then subtract 1 from item 1 of it
return item 1 of it
-- 年数の差が出ます
end calculateAge
あらゆる日付および時刻フォーマットのフォーマットそのものをカスタマイズするには、スクリプトにおいてthe timeFormatグローバルプロパティ内の該当プロパティを設定します(値の扱いに関するグローバルプロパティとローカルプロパティを参照)。
basic date、
- basic time関数
- common date、
- common time関数
- international date、
- international time関数
- internet date関数
- local time関数
- simple date関数
- C time関数
- 挙動:これらの各関数は、その関数固有のフォーマットを使って現在の時点または与えられた時点を表現したフォーマット済みの値を返します。それぞれの関数には、関数名だけを使用する形態と、いずれかの形容詞long、shortまたはabbreviated(abbrevまたはabbrに短縮可)を前に付ける形態の、4つのバリエーションがあります。各種フォーマットの全形態は、上記のconvertコマンドの表に示してあります。
basic dateフォーマットは、月の名前(または略名)から始まり、次に日、その後に年が続きます。basic timeフォーマットは、それに時刻が加わります。
common dateおよびcommon timeフォーマットは、basicフォーマットに似ていますが、日が月名の後ではなく前に来ます。
international dateおよびinternational timeフォーマットは、国際規格ISO 8601(http://www.ietf.org/rfc/rfc3339.txtを参照)に準拠した形で日付全体(年と月)または日付および時刻全体を表します。ただし、abbreviatedinternationaltimeは例外で、標準からは若干異なった、インターネットで広く使われるフォーマットを表します。
internet dateフォーマットは、RFC 2822(http://www.ietf.org/rfc/rfc2822.txt)に定義されるインターネットメッセージフォーマットの日付および時刻仕様に準拠した形で日付と時刻を表します。ただし、longinternetdateは例外で、曜日名と月名を省略せずに表示します。
local timeフォーマットは、タイムゾーン情報を含めて現在の時刻を表します。
simple dateフォーマットは、年を省略して月と日だけを含んだ非常にシンプルな形で日付を表します。
C time(またはCTime)フォーマットは、Cベースのシステムの一部(Pythonなど)で使われるフォーマットで日付と時刻を表します。
構文:
the { long | short | abbr{ev{iated}} } basic [date | time] {of 日付式}
the { long | short | abbr{ev{iated}} } common [date | time] {of 日付式}
the { long | short | abbr{ev{iated}} } international [date | time] {of 日付式}
the { long | short | abbr{ev{iated}} } internet date {of 日付式}
the { long | short | abbr{ev{iated}} } local time {of 日付式}
the { long | short | abbr{ev{iated}} } simple date {of 日付式}
the { long | short | abbr{ev{iated}} } [c time | ctime] {of 日付式}
例:
put the basic date -- Jan 4, 2008
例:
put the basic date of "10/2/1869" -- Oct 2, 1869
例:
put the long basic date -- January 4, 2008
例:
put the basic time -- Jan 4, 2008 03:20 PM
例:
put the common date -- 4 Jan 2008
例:
put the common time -- 4 Jan 2008 03:20 PM
例:
put the simple date -- 01/04
例:
put the long simple date -- January 4
例:
put the international date -- 2005-10-19
例:
put the short international date -- 2005-10
例:
put the international time -- 2005-10-19T18:32:31-0600
例:
put the abbrev international time -- 2005-10-19 18:32:31 -0600
例:
put the internet date -- Wed, 19 Oct 2005 18:21:47 -0600
例:
put the short internet date -- 19 Oct 2005 18:21 -0600
例:
put the long internet date -- Wednesday, 19 October 2005 18:21:47 -0600
例:
put the local time -- 05:42 PM -0700
例:
put the short local time -- 05:42 PM US/Mountain
例:
put the long local time -- 05:42:12 PM US/Mountain
例:
put the C time -- Fri Sep 17 13:38:17 2010
例:
put the long CTime -- Friday September 17 13:39:48 2010
これらの各関数からの戻り値は、数値とフォーマットの両方を含んでいます。テキストとして使用されると、自動的に、上記のconvertコマンド表に示したフォーマットで戻り値が表されます。戻り値は、日付/時刻計算で使用するために、数値として扱うこともできます。パラメータなしで呼び出されたときの数値は、現在の日付の正午を表す値(date関数の場合)、または関数呼び出し時の正確な日付と時刻を表す値(time関数の場合)になります。
日付式を与えると、その式が日付および/または時刻として評価され、戻り値はその日付と時刻(date関数の場合はその日付の正午)を表します。
関連:
- time関数
- dateitems関数
- formattedTime関数
- the timeFormatグローバルプロパティ
- formattedTime関数
挙動:formattedTime関数は、ユーザーが与えるカスタムフォーマットを使った日付/時刻値を返します。オプションの第2パラメータには、フォーマット対象の日付/時刻を入れます。日付/時刻値を与えない場合、結果は、与えられたフォーマットによる現在時刻になります。
構文:
the formattedTime of カスタムフォーマット
formattedTime(カスタムフォーマット {,日付時刻値})
例:
put formattedTime("Calendar for %Y") into calendarTitle
例:
put the formattedTime of "It's now day %j of %Y!"
例:
put formattedTime(the timeFormat's longDate, sentDt) into dateSent
例:
put formattedTime("%Y%m%d_%H%M%S", logTime) into logFileName
関連:
- the timeFormatグローバルプロパティ
- monthNames、weekDayNames関数
挙動:monthNames()関数は、日付のフォーマット時に使用される月名のリストを返します。weekDayNames()関数は、曜日名のリストを返します。どちらの関数も、形容詞long、short、abbreviatedを使って呼び出すことで、それぞれに応じた形態を返すことができます。いずれの場合も、 longは形容詞を指定しない形と同じもの、abbreviatedは完全な名称ではなく3文字の省略形のリストを返し、shortは数値表現を返します。
構文:
the {long | short | abbreviated} monthNames monthNames()
the {long | short | abbreviated} weekDayNames weekDayNames()
例:
put monthNames () into monthList
例:
put the abbreviated monthNames
例:
put item dayNum of weekDayNames() into dayName
例:
put the short weekDayNames -- 0~6の数値を表示します
関連:
特定のフォーマット文字列に加えて、値Naturalを使うと、「yesterday」や「at lunch on Tuesday」といったいくつかの自然言語フレーズを含む多数のフォーマットで入力を受け入れることができます。この設定は、値の「最適な推測」に到達するよう高度な技術を駆使してはいるものの、一部のケースにおいては値を日付/時刻として扱うことに関して積極的過ぎる場合がある点をご承知おきください。リスト内での使用時は、管理された優先順位の下、先に他の指定フォーマットがマッチできるよう、Naturalをリスト内の最後のアイテムにします。
SenseTalkは、the timeInputFormat iso8601で、ISO 8601規格の日付および時刻フォーマットに対応しています。この規格に関する詳細は、ISO 8601フォーマットについての記事をご覧ください。
日付フォーマット:4桁の年の数字で始まり、2桁の月の数字、2桁の日の数字と続きます。日付は必ず年で始まり、長さは4桁でなければなりません。1000年以前の年に関しては、先行ゼロを使用します。月と日は任意ですが、月なしで日を含めることは禁止です。日を省略する場合、その月の最初の日と仮定されます。月と日を両方省略する場合、1月1日と仮定されます。時刻なしで日付を与えると、SenseTalkがその日付の正午の時刻を割り当てます。
日付区切り文字:年、月、日の区切りには、先の例にあるようにスペース、ダッシュまたはピリオドを利用できます。
例:
2015-11-13 -- 2015年11月13日
例:
1959.05.11 -- 1959年5月11日
例:
2000 01 01 -- 2000年1月1日
- 時刻フォーマット:2桁の時数で始まり、2桁の分数、2桁の秒数と続きます。時刻を与える場合、時刻フォーマットは時から始めなければなりません。分と秒は任意です。ただし、分も含まれていないのであれば、秒を含めることはできません。両方を省略する場合、SenseTalkは分と秒をゼロと仮定します。秒の後に、小数点(またはコンマ)と秒の小数部を続けることもできます。
時刻区切り文字:時、分、秒の区切りには、コロンまたはスペースを利用できます。日付と時刻の両方のフォーマットを含める場合、必ず日付フォーマットを先に置きます。時刻フォーマットとの区切りにはスペースまたは大文字「T」を使用できます。日付/時刻値の後には、UTC(協定世界時)からのゼロオフセットを示す大文字「Z」を置くことも、UTCからの時間数、または時間数と分数のオフセットを示す「+」または「-」付きの2桁または4桁の数字を置くこともできます。
例:
12:15:20 -- 昼の12時15分20秒
例:
09 30 15 -- 午前9時30分15秒
例:
11:00:00 -- 午前11時、分と秒は未指定
- 現在のところ、SenseTalkでは、すべて数値の値(すべて数字で、場合によっては小数点あり)を日付/時刻として扱いません。ある値をISO 8601の日付/時刻としてSenseTalkに認識させるためには、値に次のいずれかを含めなければなりません。
要素間の区切り文字
- 日付の後ろまたは時刻の前(日付と時刻の両方が与えられている場合はその間)の文字「T」
- 末尾の文字「Z」またはタイムゾーンオフセット
- formatプロパティ
挙動:日付/時刻値は、それぞれ、関連した表示フォーマットを備えています。このフォーマットに直接アクセスする際に使えるのが、値のformatプロパティです。値を変数に格納する場合は、このformatプロパティも設定することができます。
構文:
the format of 日付時刻値
日付時刻値 . format
日付時刻値's format
例:
put date().format -- %m/%d/%y
例:
put (long date)'s format -- %A, %B %e, %Y
例:
set the format of dueDate to the timeFormat. InternationalDate
set the format of dueDate to the timeFormat. InternationalDate