2011-10-12 17 views
12

En C#, ¿cómo puedo obtener el DateTime actual en el siguiente formato? 2011-08-10T21: 36: 01.6327538ZC# - Formateo de la hora actual

+1

solo una nota, no creo que haga la notación zulú. es decir, no agregará la "Z" y convertirá a UTC/GMT (podría estar equivocado, en cuyo caso, deje de leer). Si su tiempo ya está en UTC/GMT, puede agregar la "Z" después. Alternativamente, si desea una marca de tiempo universal pero no desea convertir una hora local, puede usar la tecla "zzz" para imprimir el desplazamiento de UTC, que es una notación de fecha universal comúnmente aceptada. – gnomed

Respuesta

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

Tenga en cuenta que DateTime.Now veces sólo es preciso para una milésima de segundo, dependiendo de la hora del sistema. This page muestra lo siguiente:

Es posible visualizar muy pequeñas unidades fraccionarias de un segundo, tal como diez milésimas de segundo o cien milésimas de segundo. Sin embargo, estos valores pueden no ser significativos. La precisión de los valores de fecha y hora depende de la resolución del reloj del sistema. En Windows NT 3.5 y posterior, y en los sistemas operativos Windows Vista, la resolución del reloj es de aproximadamente 10-15 milisegundos.

Sin embargo, si usted puebla el DateTime usted mismo, puede hacerlo más preciso. No conozco ninguna otra biblioteca incorporada que sea más precisa que DateTime.UtcNow.

Además, DateTime.UtcNow.ToString("o") le dará una cadena de fecha y hora ordinal. Esto no especifica la zona horaria al final, por lo que aún necesitaría agregar Z hasta el final si se tratara de Utc

+0

Aunque por eso la Z no estoy seguro ... –

+0

Quería poner una Z en el extremo. –

+0

Oh, lo siento, eso es lo que quise decir, es por eso que te di el +1. No sabía por qué había escrito una Z. –

0

Prueba esto:

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

y echa un vistazo a este msdn link

0

Usted puede tratar ya sea:

DateTime.Now.ToString("o"); 

que también incluye el componente de zona horaria. - O -

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

Si quiere su tiempo en UTC (que es lo que implica la Z), entonces usted necesitará asegurarse de que son UTC veces ...

es decir

DateTime.UtcNow.ToString("O"); 

o si se asume que usted sabe que su fecha y hora es local ...

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

Fwiw: DateTime.Ut cAhora es más rápido que DateTime.Now porque no necesita hacer una búsqueda en la zona horaria, en Compact Framework esa diferencia puede ser muy notable por alguna razón.