2012-03-30 10 views

risposta

19

È possibile passare un array di stringhe di formato per il secondo parametro su questo sovraccarico di ParseExact - questo includerebbe sia le varianti 2 e 4 anni.

DateTime.ParseExact(myDateTime, 
        new []{"MM/dd/yy h:mmt", "MM/dd/yyyy h:mmt"}, 
        CultureInfo.InvariantCulture, 
        DateTimeStyles.None) 
+0

Grazie; questo è fantastico I formati vengono provati nell'ordine in cui appaiono nell'array? Sarebbe meglio mettere prima il formato a quattro cifre? –

+0

@WilliamGross - La documentazione non specifica, ma è probabile che sì, siano provati in ordine. Sarebbe meglio mettere prima il formato a quattro cifre se la maggior parte delle stringhe attese da analizzare avranno anni a quattro cifre. – Oded

0

Si può sempre basta usare il appropriate overload:

var date = DateTime.ParseExact(dateString, 
           new[] { "MM/dd/yyy h:mmt", "MM/dd/yy h:mmt" }, 
           new CultureInfo("en-US"), 
           DateTimeStyles.None); 
3

chiamata il sovraccarico di DateTime.ParseExact che accetta una vasta gamma di possibili formati:

DateTime dt = 
    DateTime.ParseExact(s, new[] { "MM/dd/yyyy h:mmt", "MM/dd/yy h:mmt" }, null, 0); 

Per il terzo argomento, passare null o DateTimeFormatInfo.CurrentInfo se la stringa di data è localizzato per la cultura corrente dell'utente; passare DateTimeFormatInfo.InvariantInfo se la stringa della data è sempre nel formato degli Stati Uniti.

Per il quarto argomento, 0 equivale a DateTimeStyles.None.

Vedere MSDN Library documentation.

1

Utilizzare l'DateTime.ParseExact sovraccarico che accetta una serie di formati di stringa.

MSDN:

string[] formats= {"MM/dd/yyyy h:mmt", "MM/dd/yy h:mmt"}; 


var dateTime = DateTime.ParseExact(dateString, formats, 
             new CultureInfo("en-US"), 
             DateTimeStyles.None); 
Problemi correlati