web-dev-qa-db-ja.com

C#-現在の時刻をフォーマットする

C#で、現在のDateTimeを次の形式で取得するにはどうすればよいですか? 2011-08-10T21:36:01.6327538Z

17
_DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:ss.fffffffZ")
_

DateTime.Nowは、システムクロックによっては、1000分の1秒しか正確でない場合があることに注意してください。 このページ は以下を示しています:

1万分の1秒や10万分の1秒など、非常に小さな秒単位を表示することができます。ただし、これらの値は意味がない場合があります。日付と時刻の値の精度は、システムクロックの解像度によって異なります。 Windows NT3.5以降およびWindowsVistaオペレーティングシステムでは、時計の解像度は約10〜15ミリ秒です。

ただし、DateTimeを自分で入力すると、より正確にすることができます。 _DateTime.UtcNow_よりも正確な他の組み込みライブラリを知りません。

また、DateTime.UtcNow.ToString("o")は序数の日時文字列を提供します。これは最後にタイムゾーンを指定しないため、Utcを扱っている場合は、最後にZを追加する必要があります。

25

UTCでの時刻(Zが意味するもの)が必要な場合は、UTC時刻であることを確認する必要があります...

つまり.

DateTime.UtcNow.ToString("O");

または、日時がローカルであることを知っていると仮定します...

DateTime foo = MethodThatReturnsALocalTime();
foo.ToUniversalTime().ToString("O");

FWIW:DateTime.UtcNowは、タイムゾーンルックアップを実行する必要がないため、DateTime.Nowよりも高速です。CompactFrameworkでは、何らかの理由でその違いが非常に目立つ場合があります。

2
Paul Roberts

これを試して:

    var xs = DateIime.Now;
    var frmtdDatetime = xs.ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffff");

そしてこれをチェックしてください msdn link

1
Charles Bretana

次のいずれかを試すことができます。

DateTime.Now.ToString("o");

これにはタイムゾーンコンポーネントも含まれます。 -OR-

DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss.fffffff")
0
Paul Walls