2009-06-29 9 views
5

Secondo MSDN on DateTime.ToString ToString ("s") dovrebbe sempre tornare stringa nel formato della formattazione XML Schema ordinabili stile, ad esempio: 2008-10-01T17: 04: 32,0000000Does DateTime.ToString ("s") restituisce sempre lo stesso formato?

riflettore Sono venuto a questo schema all'interno DateTimeFormatInfo .

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

Does DateTime.ToString ("s") restituisce sempre una stringa in questo formato?
Indipendentemente alla Cultura, Regione, ...


sì lo fa
codice per verificare che

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

in che modo questa domanda non è stata ancora chiusa? – Irwin

risposta

14

sì lo fa. Come altri hanno già detto, contiene solo valori numerici e stringhe letterali (ad esempio "T" e ":"), nulla che viene alterato dalle impostazioni della regione o della cultura.

11

Sì. Breaking that pattern down, sono solo proprietà numeriche, non c'è riferimento a qualcosa come il giorno o il giorno nomi in là.

aaaa-4 data cifre
MM-2 cifra del mese, con zero
dd - 2 giorni cifre, con zero
T - una T letterale
HH - Ora a 2 cifre, con zero iniziale, formato 24 ore
mm - minuto a 2 cifre, con zero iniziale
ss - 2 cifre in secondo, con zero iniziale