Does DateTime.ToString ( “s”) retornar mesmo formato sempre?
-
21-08-2019 - |
Pergunta
De acordo com a MSDN em DateTime.ToString ToString ( "s" ) deve sempre retornar string no formato do estilo classificáveis ??XML Schema formatação, por exemplo: 2008-10-01T17: 04: 32,0 milhões
Em refletor Eu vim a este padrão dentro DateTimeFormatInfo.
public string SortableDateTimePattern
{
get
{
return "yyyy'-'MM'-'dd'T'HH':'mm':'ss";
}
}
O DateTime.ToString ( "s") return sempre uma string neste formato?
Independentemente da Cultura, Region, ...
Sim, é verdade
Código de teste 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));
}
}
Solução
Sim, é verdade. Como já foi dito que só contém valores numéricos e strings literais (por exemplo, 'T' e ':')., Nada do que é alterada por configurações de região ou cultura
Outras dicas
Sim. Quebrar esse padrão baixo , é apenas propriedades numéricas, não há nenhuma referência a qualquer coisa como mês ou dia nomes lá.
aaaa - 4 dígitos data
MM - dois meses dígitos, com zero à esquerda
dd - dois dias dígitos, com zero à esquerda
T - um literal T
HH - 2 dígitos da hora, com os principais formato de zero, 24 horas
mm - 2 minutos dígitos, com zero à esquerda
ss - 2 dígitos segundo, com zero à esquerda