2009-03-20 18 views
2

3つの変数から始めて、すべてSystem.DateTimeです。Riddle:3つの等しい日付が等しくない場合

a: 10/2/2009 2:30:00 PM 
b: 10/2/2009 2:30:00 PM 
c: 10/2/2009 2:30:00 PM 

これらを互いに比較します。

a=b: True 
b=c: True 
c=a: True 

ここで、3つの日付がすべて等しいことを確認しました。ですから、それらをすべてUniversal時代に変換すると、同じ結果が得られます。右?

a.ToUniversalTime: 10/2/2009 9:30:00 PM 
b.ToUniversalTime: 10/2/2009 9:30:00 PM 
c.ToUniversalTime: 10/2/2009 2:30:00 PM 

何が起こったのですか?

+0

なぜ私は不思議ですか? –

+0

コードが足りないと思います。 – Wedge

答えて

8

.NET Frameworkバージョン2.0以降では、ToUniversalTimeメソッドによって返される値は、現在のDateTimeオブジェクトの種類プロパティによって決定されます。

  • 種類== UTC - 変換同意
0

は、cは異なるタイムゾーンにあるローカルタイムゾーンに基づいて行われる - 変換は==ローカルまたは未指定が

  • 種類を行いました。

    Dim a As DateTime = #10/2/2009 2:30:00 PM# 
        Dim b As DateTime = #10/2/2009 2:30:00 PM# 
        Dim c As DateTime = #10/2/2009 2:30:00 PM# 
    
        If Not (a = b AndAlso b = c AndAlso c = a) Then Stop 
        a = a.ToUniversalTime 
        b = b.ToUniversalTime 
        c = c.ToUniversalTime 
    
        If Not (a = b AndAlso b = c AndAlso c = a) Then Stop 
        'reach here no problem, so one of them was in a different timezone 
    
  • 関連する問題