setYear/Month/Date/Hour/Minute (date; number)

setYear/Month/Date/Hour/Minute ()は1つ目の引数に日時、2つ目の引数に追加したい数値(年数や月数、日数、時間数、分数)を入れます。

setMonth/Date/Hour/Minute()について、数値が月や日、時間、分の範囲外の場合、前後の年や月、日、時間に自動的に変換した上で、適切な数値がセットされます。

以下の例ではdate型の返り値を表現する際、ISO 8601に沿い、年月日を「2017-08-07」の形式で、間に「T」を挟み、時間を「11:36:39.138」の形式で、最後に協定世界時(UTC)を表す「Z」を入れ、表記しています。

// Sample
setYear(2015-08-07T11:36:39.138Z; 2017)
> 2017-08-07T11:36:39.138Z

setMonth(2015-08-07T11:36:39.138Z; 5)
> 2015-05-07T11:36:39.138Z

setMonth(2015-08-07T11:36:39.138Z; 17)
> 2016-05-07T11:36:39.138Z

setDate(2015-08-07T11:36:39.138Z; 5)
> 2015-08-05T11:36:39.138Z

setDate(2015-08-07T11:36:39.138Z; 32)
> 2015-09-01T11:36:39.138Z

setHour(2015-08-07T11:36:39.138Z; 6)
> 2015-08-07T06:36:39.138Z

setHour(2015-08-07T11:36:39.138Z; -6)
> 2015-08-06T18:36:39.138Z

setMinute(2015-10-07T11:36:39.138Z; 10)
> 2015-10-07T11:10:39.138Z

setMinute(2015-10-07T11:36:39.138Z; 61)
> 2015-10-07T12:01:39.138Z

formatDate (date; format; [timezone])

formatDate()は1つ目の引数に日時、2つ目の引数に変換後のテキストのフォーマットをとります。

フォーマットに使われるトークンは、「YY」や「MM」などで、「Tokens for date/time formatting」に一覧があります。

3つ目の引数にはタイムゾーンをとることもでき、デフォルトではプロフィールに設定されたタイムゾーンとなります。

実例を見てみましょう。

年・月・日をセット[2]

シナリオ実行時の日時を表す「now」について、年を「2222」年、月を「2」、日を「22」に設定したものを変数として定義します。

[2]の実行結果を見ると、年・月・日のみが変更され、「2222年2月22日」となっていることが分かります。

時・分をセット[3]

[2]で定義した変数について、時間を「22」時、分を「22」に設定します。

[3]の実行結果を見ると、「2222年2月22日 22:22」に変換されていますが、これはあくまで日本時間であり、右上部の「Download output bundles」をクリックすると、「UTC」での時間が表示されます。

日時をテキストに変換[4]

[3]で定義した変数について、「YYYY-MM-DD HH:mm Z」という形式と、「-」を「/」にしたもの、に変換しています。

「Z」はタイムゾーンを表し、1つ目の変数については、タイムゾーンを「UTC」に変換しています。

[4]の実行結果を見ると、UTC及び日本時間のそれぞれで、期待通りに代入されていることが分かります。

以上、setYear/Month/Date/Hour/Minute()でdate型を操作し、formatDate()でテキストに変換する方法についての説明でした。