2011-01-13 3 views
3

私は、復元された日付時刻文字列の値が元のものと異なる理由を理解するのに苦労してきました。私は普遍的なdatetime(書式 "u"ので、最後に 'z'を持っている)に文字列を書いていますが、それが復元されると、1時間ごとに異なります。私はこのようなことが起こらないように "u"を使っています。誰に違いがあるのか​​教えてもらえますか?DateTime.Parseは1時間オフです。どうして?

私は5つの異なるタイムゾーンでコードを使用するので、良い文字列表現が必要です。

プログラム:

using System; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      //Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.GetCultureInfoByIetfLanguageTag("es-CR"); 

      DateTime min = DateTime.MinValue; 

      Console.Write("Min value date: "); 
      Console.WriteLine(min); 

      Console.Write("String:   "); 
      string str = min.ToString("u"); 
      Console.WriteLine(str); 

      DateTime dt = DateTime.Parse(str); 

      Console.Write("Restored Date: "); 
      Console.WriteLine(dt); 

      Console.ReadLine(); 

     } 
    } 
} 

出力は次のとおりです。

MIN値の日付:01/01/0001午前12:00:00

文字列:0001-01-01 00:00:00Z

復元日時:01/01/01 01:00:00 am

編集:コスタリカ文化を体験するためのオプション。

+1

文字列を解析してdatetimeに戻していますか? –

答えて

4

ユニバーサルDateTime文字列を解析すると、ローカルのタイムゾーンを使用していますか? ToUniversalTime()およびToLocalTime()メソッドを使用して、前後に変換できます。また、適切なタイムゾーンに変換するのに役立つ "Z"の後にタイムゾーンオフセットを配置する場合。

ブライアン

+0

コード文字列str = min.ToUniversalTime()。ToString( "u"、System.Globalization.CultureInfo.InvariantCulture);期待どおりに実行するようだ。これが修正であるかどうかをテストするために、他の文化を探しています。 –

+0

UTC時間にタイムゾーンが必要ですか? –

+0

@Kees UTC時間には特定の 'DateTimeKind.Utc'があります。 – Nekresh

1

非常にinteresting thread about this on bytes.comがあります。

UTCとCETの間に日付の最後に 'Z'が表示されているようです。 UTC/GMT/ZULU /軍事で正確に一つの私たちの 後に、その後非常に普及エリアで

それが今 (未夏時間)ですCET。

私はこのテーマには自信がありませんので、スレッドを読むことができます。

関連する問題