11

私は2つDateTimeの値を持っています:

date1 <- {15-07-13 20:45:10} with Kind = Unspecified

date2 <- {15-07-13 20:45:10} with Kind = UTC

これら 2 つの日付を比較すると、2 つの日付は同じです。

if (DateTime.Compare(date1, date2)!=0)
    ...

誰かが理由を説明できますか?

私にはもう少し奇妙です: date1 (未指定の種類) を UTC に変換すると、日付が異なることがはっきりとわかります:

date1.ToUniversalTime() --> {15-07-13 18:45:10} with Kind = UTC

4

2 に答える 2

18

誰かが私に理由を説明できますか?

うん。根本的にDateTime壊れたタイプ、IMOだからです。基本的に、Kindは比較には使用されません。これを行うと、古いコードが壊れる可能性が非常に高く、常に望んでいるとは限りません。これは .NET 1.1 用に追加されましたが、常に優れた方法であるとは限りません。比較で見たように、期待したすべての方法で完全に統合されたわけではありません。

別の例として、(システムのローカル タイム ゾーンを意味する) of の場合でも、算術計算では無視Kindます。同じ現地時間、または現地時間で 2 時間後、DST 移行前後)。LocalAddHours(1)

DateTime私のアドバイスは、そもそも異なる種類の値を比較することを避けることです。あなたがやりたいことはほとんどありません。

(もちろんNoda Timeの使用もお勧めしますが、それは少し別の問題です。)

于 2013-07-15T18:57:38.820 に答える
13

ドキュメントからDateTimeKind(強調は私のものです):

DateTimeKind 列挙体のメンバーは、現地時間と協定世界時 (UTC) の間の変換操作で使用されますが 、比較または算術演算では使用されません

于 2013-07-15T18:57:21.997 に答える