2011-08-09 17 views
15

Duplicar posible:
datetime to string with time zoneComo llegar DateTime.Now() en AAAA-MM-DDThh: mm: ssTZD usando C#

Ésta es una de la fecha estándar del W3C formato de hora que quiero usar en el mapa del sitio. Este estándar DateTime es:

fecha completa más horas, minutos y segundos: AAAA-MM-DDThh: mm: ssTZD donde TZD = designador de zona horaria (Z o + hh: mm o hh: mm) (por ejemplo, 1997-07-16T19: 20: 30 + 01: 00)

estoy usando el siguiente código para obtener la corriente DateTime en ese formato:

DateTime.Now.ToString("yyyy-MM-ddThh:mm:ssTZD"); 

Pero esto da: 2011-08 -10T02: 27: 20TZD

Aparentemente, DateTime.Now no reconoce "TZD" en el parámetro. Por favor ayuda. ¿Cómo puedo obtener el DateTime actual en este formato?

+0

'DateTime.Now' ni siquiera ve que parámetro. Es un parámetro del método 'ToString'. – CodesInChaos

Respuesta

34

Utilice el especificador de formato zzz para obtener el desplazamiento de la zona horaria en horas y minutos. También desea utilizar el especificador de formato HH para obtener las horas en formato de 24 horas.

DateTime.Now.ToString("yyyy-MM-ddTHH:mm:sszzz") 

Resultado:

2011-08-09T23:49:58+02:00 

Algunos ajustes de cultivo utiliza períodos en lugar de los dos puntos de tiempo, por lo que es posible que desee utilizar dos puntos literales en lugar de separadores de hora:

DateTime.Now.ToString("yyyy-MM-ddTHH':'mm':'sszzz") 

Custom Date and Time Format Strings

+0

¿cómo es posible que tengas 24h mod y yo 12h mode? – genesis

+0

Más uno por mencionar literalmente dos puntos; la gente tiende a olvidar que ':' representa el separador de tiempo del proveedor de formato actual. –

+1

Pasar 'CultureInfo.InvariantCulture' es una forma de asegurarse de que': 'no se traduzca. También asegura que se use el calendario gregoriano, ya que también es posible que el calendario de la cultura actual sea otra cosa. –

3

Pruebe esto:

DateTime.Now.ToString("yyyy-MM-ddThh:mm:sszzz"); 

zzz es la compensación de la zona horaria.

+0

¿hay alguna forma de agregar milisegundos también? –

+0

¡Oh, sí! Lo encontré ..: fff - es por fracción de segundo. 'código' DateTime.Now.ToString (" aaaa-MM-ddThh: mm: ss: fffzzz "); –

9

uso zzz en lugar de TZD

Ejemplo:

DateTime.Now.ToString("yyyy-MM-ddThh:mm:sszzz"); 

Respuesta:

2011-08-09T11:50:00:02+02:00 
Cuestiones relacionadas