0

データベースに時刻を UTC で保存する必要があることはわかっていますが、次の理由により、これを採用するためにチームからサポートを得るのに苦労しています。

  • 内部タイムスタンプを扱うことはありません
  • 夏時間はありますが、常に現地時間を表示します。UTC で保存する必要はありません。
  • 変換が必要なため、データ ウェアハウスの負担が大きい
  • 私たちは外部データを消費しますが、それらは UTC ではないため、他の人に余分な作業が発生します
  • 私たちのビジネスユーザーは決して尋ねませんでした

ここで 2 つの質問があります。

  • 既存の現地時間を UTC に変換すると、常に有効な日時スタンプになりますか? UTC から現地時間への変換は常に有効であると聞きました。ただし、現地時間から UTC への変換はできない場合があります。
  • それが正しいことであり、UTC時間が常に有効であることを除いて、他のプロUTCの議論は考えられません。

ほとんどの場合、これらの時間は表示目的で使用され、またレポート (開始日と終了日) に対して実行されます。一部のビジネス ユーザーは、それらへの直接読み取りアクセス権も持っています (彼らは現地時間を好みます)。

4

2 に答える 2

4

既存の現地時間を UTC に変換すると、有効な変換になりますか?

「有効」を定義します。

一つには、常に明確であるとは限りません。特定の現地時間は、0、1、または 2 つの UTC 時間にマップできます。

  • 現地時間がスキップされる場合は 0 マッピング。たとえば、DST 移行の「スプリング フォワード」により現地時間が午前 1 時から午前 2 時になる場合は 1.30 です。もちろん、有効な現地時間であることが意図されている場合、これは発生しないはずですが、毎週のイベントのようなものがある場合、うっかりして無効な現地時間になってしまう可能性があります。
  • 関連する DST 遷移がない場合は 1 つのマッピング
  • 現地時間が曖昧な場合は 2 つのマッピング。たとえば、DST 移行の「フォールバック」により現地時間が午前 2 時から午前 1 時に戻る場合は 1.30 です。

基本的に、現地時間は、DST 移行について考える必要がある時期を判断するのが困難です。たとえば、午前 12 時 30 分 + 1 時間は、常に午前 1 時 30 分とは限りません。

個人的には、与えられた時間が実際に表しているものをモデル化するように努めるべきだと思います。場合によっては、UTC からの特定のオフセットを持つ現地時間です。場合によっては、実際には人間の時間ではなく、任意のスケールとエポックを持つタイムスタンプです。これについては、Noda Time ユーザー ガイドに少し書いています。

この時期に何をする必要があるかについて、あなたはまだ私たちに話していません。何らかの演算を実行する必要がありますか? 比較?再発?ユーザーに表示しますか? 他のタイムゾーンのユーザーに表示される可能性はありますか? そのような情報がなければ、具体的な推奨事項を作成することは非常に困難です。

于 2012-06-08T22:13:37.433 に答える
1

時刻を UTC として保存するのが最も安全な方法です。現地時間を保存したい場合は、UTC オフセット (2012-05-20 05:34 UTC-06:00) も保存すれば可能です。

さて、私のコメントの魔法の中心文は、「タイム ゾーンは UTC オフセットです!」です。

多くの場合、タイム ゾーンは地理的に定義されていると考える傾向がありますが、タイム ゾーンは DST で切り替わります。たとえばヨーロッパでは、冬には中央ヨーロッパ時間 (CET)、夏には中央ヨーロッパ夏時間 (CEST) が使用されます。ナミビアはヨーロッパと同じ経度にあり、同じタイム ゾーンを使用しているように見え、どちらも DST を使用しています。しかし、ナミビアは南側にあり、その逆であるため、ナミビアとヨーロッパの現地時間が同じになることはありません。

于 2013-09-27T14:32:50.890 に答える