"9999/12/31"のDateTimeへの変換 - Printable Version +- Curl Global Community (https://communities.curl.com) +-- Forum: Discussions (https://communities.curl.com/forumdisplay.php?fid=1) +--- Forum: General Curl questions (https://communities.curl.com/forumdisplay.php?fid=2) +--- Thread: "9999/12/31"のDateTimeへの変換 (/showthread.php?tid=1276) |
"9999/12/31"のDateTimeへの変換 - kay - 11-12-2015 業務ルールで大きな日付が入ってくる可能性がある箇所では DateTime値にタイムゾーンの設定が必要というのを知りましたので、 備忘録として残させていただきます。 文字列からDateTime型の値を得る際に、9999/12/31のような大きい値を取った場合 DateTime のコンストラクタで作成したインスタンスは data にアクセスすると DateTimeException が発生し、 DateTime.date ファクトリで作成したインスタンスでは問題が発生しませんでした。 よくよくリファレンスを見てみると、コンストラクタとファクトリではDateTime.zone に設定される初期値が異なり、 コンストラクタは DateTimeZone.local ファクトリは DateTimeZone.utc をセットするとのことで、これによって動作が異なっているようでした。 DateTimeZone.local は DateTimeZone.mode (DateTimeZoneMode.local) の制限により、 DateTimeData.epoch-simple (1970-01-01 00:00:00 +0000) から 2038/01/19 (所謂2038年問題) までの 日付のみ扱えるとのことで、これが原因でエラーが発生していたようです。 Code: def dt:DateTime = |