2009-06-29 19 views
5

Según MSDN on DateTime.ToString ToString ("s") siempre debe devolver cadena en el formato del formato de estilo de esquema XML se puede ordenar, por ejemplo: 2008-10-01T17: 04: 32,0000000¿DateTime.ToString ("s") devuelve siempre el mismo formato?

En reflector vine a este patrón dentro DateTimeFormatInfo .

public string SortableDateTimePattern 
{ 
     get 
     { 
      return "yyyy'-'MM'-'dd'T'HH':'mm':'ss"; 
     } 
} 

¿El DateTime.ToString ("s") que siempre devuelva una cadena en este formato?
Independientemente de la Cultura, Región, ...


sí lo hace
código para probar que

var dateTime = DateTime.Now; 
var originialString = dateTime.ToString("s"); 
string testString; 

foreach (var c in System.Globalization.CultureInfo.GetCultures(CultureTypes.AllCultures)) 
{ 
    Thread.CurrentThread.CurrentUICulture = c; 
    if (c.IsNeutralCulture == false) 
    { 
     Thread.CurrentThread.CurrentCulture = c; 
    } 

    testString = dateTime.ToString("s"); 
    Console.WriteLine("{0} ", testString); 
    if (originialString != testString) 
    { 
     throw new ApplicationException(string.Format("ToString(s) is returning something different for {0} " , c)); 
    } 
} 
+1

¿cómo esta pregunta aún no está cerrada? – Irwin

Respuesta

14

sí lo hace. Como otros han dicho, solo contiene valores numéricos y literales de cadenas (por ejemplo, 'T' y ':'), nada que esté alterado por la configuración regional o cultural.

11

Sí. Breaking that pattern down, son solo propiedades numéricas, no hay referencia a nada como el mes o día nombres allí.

aaaa - 4 Revision Date dígitos
MM - 2 meses dígitos, con ceros a la izquierda
dd - 2 días dígitos, con ceros a la izquierda
T - T literal
HH - hora de 2 dígitos, con cero a la izquierda, formato de 24 horas
mm - minuto de 2 dígitos, con cero al
ss - segundo de 2 dígitos, con el cero inicial

Cuestiones relacionadas