関数索引
siteTimeZone() 関数は、サイトに指定されているタイムゾーンを取得したい時に使用します。
この関数の戻り値は、サイトに指定されているタイムゾーンID です。 タイムゾーンID は formatDate(), formatDateW3CDTF(), formatDateRFC2822(), parseDate() などにサイトに指定されているタイムゾーンを指定する時などに使用することができます。
サイトに指定されているタイムゾーンの ID を表示してみましょう。
<body>
......
サイトに指定されているタイムゾーンは %siteTimeZone()% です。
.....
</body>
この展開結果は、例えば、サイトに指定されているタイムゾーンが America/Los_Angeles の場合に
サイトに指定されているタイムゾーンは America/Los_Angeles です。
となります。
サイトに指定されているタイムゾーンから、直接 JST や PST といった表現を取り出すことはできない点に注意してください。Asia/Tokyo のように、夏時間が施行されていない地域では、そのタイムゾーンから直接 JST を導きだせるのですが、Ameria/Los_Angeles など、夏時間が施行されているエリアでは、タイムゾーンに加えて、特定の年月日時分秒が与えられないと PST (Pacific Standard Time) か PDT (Pacific Daylight Time) かは決定できません。
formatDate() 関数を使って日付をフォーマットする時に、サイトに指定されているタイムゾーンに従ってフォーマットしてみます。フォーマットは英語形式にしてみましょう。
<body>
......
現在の時刻は %formatDate(currentTime(), "E, MMMM d yyyy hh:mm:ss z '(GMT'Z')'", siteTimeZone(), "en")% です。
.....
</body>
この展開結果は、例えば、サイトに指定されているタイムゾーンが America/Los_Angeles の場合に
現在の時刻は Wed, May 12 2010 18:11:59 PDT (GMT-0700) です。
となります。
formatDate() 関数の第3引数に siteTimeZone() 関数の戻り値を渡しています。第4引数に言語として英語 "en" を指定する必要があるため、このケースでは第3引数を省略することができません。そこで siteTimeZone() 関数でサイトに指定されているタイムゾーンを取り出して第3引数として使用しています。
parseDate() 関数を使って日付表現をパースする場合を考えてみましょう。パースの対象となる日付表現にはタイムゾーンに関する情報が含まれていないケースを考えます。その日付表現をサイトに指定されているタイムゾーンに準じて表記されているものとしてパースします。
parseDate() 関数の第3引数に siteTimeZone() 関数を使って取得したサイトに指定されているタイムゾーンを指定することで、タイムゾーン情報を含まない日付表現を、サイトに指定されているタイムゾーンに準じる日付表現としてパースすることができます。
<body>
......
%formatDateRFC2822(parseDate("Feb 1 2010 12:34", "MMM d y H:m", siteTimeZone(), "en"), "GMT")%
.....
</body>
この展開結果は、例えば、サイトのタイムゾーンに Asia/Tokyo が指定されている場合、
Mon, 01 Feb 2010 03:34:00 +0000
となります。
サイトに指定されているタイムゾーンは Asia/Tokyo なので "Feb 1 2010 12:34" は日本時間としてパースされます。そのパース結果を formatDateRFC2822() 関数でフォーマットする際にタイムゾーンとして GMT (グリニッジ標準時)を指定しフォーマットしているので、結果が 03:34 となっています。Asia/Tokyo と GMT の時差は 9 時間です。