2011-10-12 11 views
12

In C#, come posso ottenere il DateTime corrente nel seguente formato? 2011-08-10T21: 36: 01.6327538ZC# - Ora corrente di formattazione

+1

solo una nota, non penso che farà la notazione di tempo Zulu. non aggiungerà la "Z" e convertirà in UTC/GMT (potrei sbagliarmi, nel qual caso smettere di leggere). Se il tuo tempo è già in UTC/GMT, puoi semplicemente aggiungere la "Z" dopo. In alternativa, se si desidera un timestamp universale ma non si desidera convertire un'ora locale, è possibile utilizzare il tasto "zzz" per stampare l'offset da UTC, che è una notazione di data universale comunemente accettata. – gnomed

risposta

16
DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:ss.fffffffZ") 

Tenete a mente che DateTime.Now a volte è preciso solo per un millesimo di secondo, a seconda l'orologio di sistema. This page mostra le seguenti:

È possibile visualizzare molto piccole unità frazionarie di secondo, come decimillesimo di secondo o cento millesimi di secondo. Tuttavia, questi valori potrebbero non essere significativi. La precisione dei valori di data e ora dipende dalla risoluzione dell'orologio di sistema. Su Windows NT 3.5 e versioni successive e sistemi operativi Windows Vista, la risoluzione dell'orologio è di circa 10-15 millisecondi.

Tuttavia, se si inserisce lo DateTime da soli, è possibile renderlo più preciso. Non sono a conoscenza di altre librerie incorporate che siano più precise di DateTime.UtcNow.

Inoltre, DateTime.UtcNow.ToString("o") fornirà una stringa datetime ordinale. Questo non specifica il fuso orario alla fine, quindi avresti ancora bisogno di aggiungere Z alla fine se avessi a che fare con Utc

+0

Anche se la Z non sono sicuro .. –

+0

La sua ricercata una Z messa alla fine. –

+0

Oh scusa è quello che intendevo - è per questo che ti ho dato il +1. Non sapevo perché avesse una Z. –

0

Prova questo:

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

e controllare questo msdn link

0

Si può provare uno:

DateTime.Now.ToString("o"); 

che comprende anche il componente del fuso orario. - O -

DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss.fffffff") 
2

Se vuoi i tuoi tempi in UTC (che è ciò che la Z implica) allora tu necessità di garantire che essi siano UTC volte ...

cioè

DateTime.UtcNow.ToString("O"); 

o assumendo che sapete che il vostro datetime è locale ...

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

FWIW: DateTime.Ut cNow è più veloce di DateTime.Now perché non ha bisogno di fare una ricerca nel fuso orario, su Compact Framework tale differenza può essere molto evidente per qualche motivo.