日付と時刻の利用

Curlで日付と時刻を扱うには、DateTimeクラスを利用します。

DateTime

現在時刻を表示するには、以下のようにします。

let now:DateTime = {DateTime}
{output now}

指定した時刻のDateTimeオブジェクトを生成するには、以下のようにします。 

let past1:DateTime = {DateTime “01/01/2001”}
{output past1}

let past2:DateTime = {DateTime year = 2001, month = 1, day = 1}
{output past2}

文字列への変換

DateTimeオブジェクトを文字列に変換するには、DateTimeInfoクラスを利用します。これはDateTimeクラスのinfoゲッターにアクセスすることで取得できます。

let now:DateTime = {DateTime}
{dump
    now.info.iso-date, || yyyy-mm-dd
    now.info.iso-time, || hh:mm:ss
    now.info.year,       || 年(int)
    now.info.month,    || 月(int)
    now.info.day,        || 日(int)
    now.info.hour,       || 時(int)
    now.info.minute,    || 分(int)
    now.info.second     || 秒(int)
}

2038年問題について

以下のようにDateTimeを用いた場合は2038年までしか扱うことができません。(参考Wikipedia:2038年問題

let v:DateTime = {DateTime year = 2039}

上記コードを実行すると以下のような例外が発生します。

DateTimeException: DateTimeInfo ‘2039-01-01 00:00:00.000000’ を DateTimeData に変換することができません:指定された日時が範囲外です。

これを回避するためには、キーワード引数「zone」に以下のように指定して、インスタンスを生成します。

let v:DateTime = {DateTime year = 2039, zone = {DateTimeZone mode = DateTimeZoneMode.utc}}

もしくはDateTime.dateファクトリを用いることでも回避することができます。