2013-05-08 9 views
17

On msdn it is defined for Unspecified Kind as:日時指定されていない種類

のでkind

種類は、不特定の日時はUTCですが、ある場合には、同じページ(与えられた例)上:

class Sample 
{ 
    public static void Main() 
    { 
     DateTime saveNow = DateTime.Now; 
     myDt = DateTime.SpecifyKind(saveNow, DateTimeKind.Unspecified); 
     Display("Unspecified: .....", myDt); 
    } 

    public static string datePatt = @"M/d/yyyy hh:mm:ss tt"; 

    public static void Display(string title, DateTime inputDt) 
    { 
     DateTime dispDt = inputDt; 
     string dtString; 

     dtString = dispDt.ToString(datePatt); 
     Console.WriteLine("{0} {1}, Kind = {2}", title, dtString, dispDt.Kind); 

     dispDt = inputDt.ToLocalTime(); 
     dtString = dispDt.ToString(datePatt); 
     Console.WriteLine(" ToLocalTime:  {0}, Kind = {1}", dtString, dispDt.Kind); 

     dispDt = inputDt.ToUniversalTime(); 
     dtString = dispDt.ToString(datePatt); 
     Console.WriteLine(" ToUniversalTime: {0}, Kind = {1}", dtString, dispDt.Kind); 
     Console.WriteLine(); 
    } 
    } 
} 

出力などを与えます:

未指定:..... 2005年5月6日2時34分42秒PM、種類=未指定

ToLocalTime:2005年5月6日七時34分42秒AM、種類=ローカル

ToUniversalTime :5/6/2005 09:34:42 PM、種類= Utc

UnspecifiedがUtcの場合、UtcからUtcへの変換でdatetimeオブジェクトの値が変更されるのはなぜですか?

答えて

42

いいえ、未指定とUTCは非常に異なります - あなたが引用しているページはToLocalTimeです。要点は、ToLocalTimeを "指定されていない" DateTimeを使用して呼び出すと、のように扱われ、のように扱われます。それはシステムのローカルタイムゾーンにあったかのように

同様にあなたがDateTime「未指定」を使用してToUniversalTimeを呼び出す場合、その値はを扱われます。

率直に言って、この種の理由はI dislike DateTime rather a lotです。私があなただったら、代わりにNoda Timeを使います。このコンセプトはコンセプトを完全に別のタイプに分けて、混乱の多くを取り除きます。 (もっと多くのタイプがありますが、それぞれが一つのコンセプトを表しています)。私は明らかに偏っています...

3

DateTimeKind.Unspecifiedは、時間を変換したくない別の現地時間に

たとえば、クライアントアプリケーションにサーバーの現在の時刻を表示するサーバーアプリケーションを取り上げます。サーバーでDateTimeKind.Unspecifiedを指定せず、WCF呼び出しによって現在時刻が取得された場合、クライアントアプリケーションで.ToStringが呼び出されると、異なる場合は自動的にローカルタイムゾーンに変換されます。

関連する問題