Curlで日付と時刻を扱うには、DateTimeクラスを利用します。
DateTime
現在時刻を表示するには、以下のようにします。
let now:DateTime = {DateTime} {output now} |
指定した時刻のDateTimeオブジェクトを生成するには、以下のようにします。
let past1:DateTime = {DateTime “01/01/2001”} let past2:DateTime = {DateTime year = 2001, month = 1, day = 1} |
文字列への変換
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ファクトリを用いることでも回避することができます。