No DateTime.ToString ( “s”) vuelven mismo formato?
-
21-08-2019 - |
Pregunta
Según MSDN en 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
En reflector llegué a este patrón dentro DateTimeFormatInfo.
public string SortableDateTimePattern
{
get
{
return "yyyy'-'MM'-'dd'T'HH':'mm':'ss";
}
}
¿Tiene DateTime.ToString retorno ( "s") siempre es una cadena en este formato?
Independientemente de la Cultura, Región, ...
Sí lo hace
El código para comprobar 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));
}
}
Solución
Sí lo hace. Como otros han dicho que sólo contiene valores numéricos y cadenas literales (por ejemplo, 'T' y ':')., Nada de lo que se ve alterado por la configuración de región o cultura
Otros consejos
Sí. romper ese patrón abajo , es sólo propiedades numéricas, no hay ninguna referencia a nada como el mes o el día nombres en ese país.
aaaa - 4 dígitos fecha
MM - mes 2 dígitos, con ceros a la izquierda
dd - día 2 dígitos, con ceros a la izquierda
T - un literal T
HH - 2 dígitos para la hora, con el principal formato de
cero 24 horas
mm - 2 minutos dígitos, con ceros a la izquierda
ss - 2 segundos dígitos, con ceros a la izquierda