DateTimeにおけるタイムゾーンの仕様など

◆ご質問◆
 DateTimeについてCurlドキュメントを拝見したのですが、
 記載されている仕様について、
 以下、いろいろ書きますが認識に誤りなどありましたら
 ご指摘ください。
 ①ローカルタイムゾーンにおける制約について
  DateTimeのzoneを指定しない場合、
  ローカルタイムゾーンがデフォルトとなるようですが、
  この時、日付範囲の制約が発生する仕様になっているようです。
  ※1970-01-01 00:00:00.000000 +0000 から
   2038-01-19 03:14:07.000000 +0000
  ローカルタイムゾーン以外に設定すると、
  この制約が無くなることは確認しました。
  Curlでは無限の範囲と制度で日付と時刻を表すことができるにも
  関わらず、こういった制限があるのはなぜでしょうか。

 ②ゾーン指定をすることによる影響について
  上記①のことから、
  zoneを指定して回避しようと考えました。
  この時、ゾーンに「UTC」を設定するとすると、
  日本時間を扱っている上では、正しい時間とはならないので、
  日付を表す文字列に「+0900」を追加するか等も考えています。
  このゾーンについて、UTCまたはその他のゾーンが設定されていると、
  ローカルタイムゾーンと比べて、
  DateTime周辺のAPIの結果に大きな違いが出るのでしょうか。
  例えば、
   DateTimeのコンストラクタに日付とUTCでゾーン設定した時、
   その後のAPIで日付取得した時に自動的に日本時間(+9時間)として
   取得されるなどあるとUTCは使えないと判断します。

 ③まとめ
  上記①②を踏まえ、
  Curlでシステム開発をする際、
  DateTimeは通常どのように扱ってらっしゃるのでしょうか。
  <1> 1970年~2038年の範囲を超えた日付を扱ったことが無いので
      ローカルタイムゾーンのまま。
  <2> システム導入先の国に合わせてタイムゾーンを指定。
  <3> UTCで決め打ち。
      いずれかになるかと思うのですが。

◆回答◆
①について
Curlは時刻を内部的に「UNIX時間」として扱っています。
また、その値を32ビットで扱っており、その最大値が2147483647となります。
(これが2038年1月19日3時14分7秒となります。)
この値を超えるとオーバーフローし誤作動する可能性があります。
このようなことから制約があります。

②について
{DateTime
    year   = 2009,
    month  = 6,
    day    = 3,
    hour   = 14,
    minute = 8,
    second = 14,
    zone = {DateTimeZone mode = DateTimeZoneMode.utc, utc-offset-minutes = 540} }
としてDateTimeを設定すれば
2009-06-03 14:08:14.000000 +0900
として取得できます。

③について
アプリケーションの用途によって扱い方が
変わるかと思います。
例えば、
<1>ならばタイムゾーンが一つであるような国で完結するようなシステム。
(日本国内のみで使用される)
<2>なら韓国で国内で使用されるようなシステム。
<3>複数のタイムゾーンの国で使用され、その使用国間でコミュニケーションするようなシステム。
(日本、米国、中国で使用される)