se si dispone di una stringa datetime in un formato strano, ad esempio YYYY##MM##DD HH**M**SS
, come posso creare una nuova base di oggetto datetime su tale? Ho letto qualcosa sul datetimeformatinfoclass ma non sono sicuro di come farlo funzionare ..Parse DateTime in C# da uno strano formato
risposta
È possibile utilizzare DateTime.ParseExact, o DateTime.TryParseExact per i dati che non siete sicuri nelle Ad esempio:
using System;
class Test
{
static void Main()
{
string formatString = "yyyy'##'MM'##'dd' 'HH'*'mm'*'ss";
string sampleData = "2010##02##10 07*22*15";
Console.WriteLine(DateTime.ParseExact(sampleData,
formatString,
null));
}
}
Le virgolette nella stringa di formato non sono strettamente necessari - questo funzionerà. troppo:
string formatString = "yyyy##MM##dd HH*mm*ss";
Tuttavia, utilizzando le virgolette significa che tu sia esplicita che i caratteri tra le virgolette devono essere utilizzati alla lettera, e non inteso come personaggi pattern - quindi se hai cambiato "#" per "/" la versione che usa le virgolette userebbe sicuramente "/" mentre la ve rsion senza usare un valore specifico della cultura.
Il null
nella chiamata a ParseExact
significa "usare la cultura corrente" - in questo caso è improbabile fare molta differenza, ma una valida alternativa comunemente è CultureInfo.InvariantCulture
.
È spiacevole che non ci sia modo di ottenere il BCL per analizzare la stringa di formato e conservare le informazioni; il mio progetto Noda Time rettifica questa situazione e spero che renderà l'analisi e la formattazione molto più veloce, ma al momento non è ancora pronto per la produzione.
È possibile utilizzare il metodo DateTime.ParseExact e passare il formato necessario.
questo è il modo più efficiente di analizzare un 'stringa' in' DateTime'. l'analisi con '.Parse()' e '.TryParse()' senza informazioni sul formato è f..ingendo maledettamente lento! –
http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx ha l'analisi corrispondente, se stai fornendo il tuo formatString – Tanzelax