C#で、現在のDateTimeを次の形式で取得するにはどうすればよいですか? 2011-08-10T21:36:01.6327538Z
_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
を追加する必要があります。
UTCでの時刻(Zが意味するもの)が必要な場合は、UTC時刻であることを確認する必要があります...
つまり.
DateTime.UtcNow.ToString("O");
または、日時がローカルであることを知っていると仮定します...
DateTime foo = MethodThatReturnsALocalTime();
foo.ToUniversalTime().ToString("O");
FWIW:DateTime.UtcNowは、タイムゾーンルックアップを実行する必要がないため、DateTime.Nowよりも高速です。CompactFrameworkでは、何らかの理由でその違いが非常に目立つ場合があります。
これを試して:
var xs = DateIime.Now;
var frmtdDatetime = xs.ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffff");
そしてこれをチェックしてください msdn link
次のいずれかを試すことができます。
DateTime.Now.ToString("o");
これにはタイムゾーンコンポーネントも含まれます。 -OR-
DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss.fffffff")