2010-01-27 4 views
7

Ho una stringa che rappresenta un valore DataTime e voglio eseguire l'allenamento con quale formato di stringa è stato utilizzato per creare la stringa.Workout il formato di stringa utilizzato per la formattazione DateTime

Per esempio
- Data "Mercoledì 27 gennaio 2010" Mi aspetto "dddd dd MMM yyyy"
- dato "2010 01 27" Mi aspetto "AAAA MM GG"

Si supponga che la data è vicino to DateTime.Now e si riferisce a CurrentCulture. Quindi, dato che abbiamo it-IT cultura
- dato "01 01 2010" Mi aspetto "AAAA MM GG"

C'è un modo semplice per fare questo?

+0

dispiace per chiedere Sophie88, ma perché sono stai cercando di farlo? – Lazarus

+0

(Possibilmente) commento stupido, ma sai che puoi passare una di quelle date a DateTime.Parse (o TryParse) e analizzerà correttamente la data? Tuttavia, suppongo tu debba restituire le date nel modulo che ti hanno passato, quindi devi conoscere il formato in cui arrivano. –

+0

Sto analizzando un risultato di un vecchio programma per mio zio e voglio sapere che "mercoledì" può essere ignorato in quanto è una parte "dddd". – Sophie88

risposta

0

si potrebbe dividere in spazi bianchi per ottenere un array di stringhe allora si potrebbe testare gli elementi dell'array contro i valori noti per cercare di indovinare il formato

esempio se si cerca "Mercoledì" se lo trovate assumere "dddd"

se un numero di quattro cifre assumere aaaa

giorni e mesi potrebbe essere un problema, si potrebbe verificare per> 12 per i giorni, ma che è piuttosto Bad

forse si potrebbe dedurre il formato utilizzando scissione spazi poi DateTime.Parse sulla orignal e il test contro una versione formattata (utilizzando il formato infered) la data analizzato per l'uguaglianza

+0

Con la cultura attuale, posso controllare i nomi dei giorni della settimana in qualche modo? – Sophie88

+0

si potrebbe fare una supposizione circa l'ordine di due giorni cifre e mesi in base alla cultura corrente, ma il "vecchio software" potrebbe non essere rispettando la cultura corrente in ogni caso – PeanutPower

+0

@ Sophie88: sì, è possibile utilizzare la proprietà DateTimeFormat della classe CultureInfo che a sua volta ha una proprietà chiamata dayNames che restituisce un elenco dei nomi dei giorni di quella cultura. –

1

La cosa più semplice da fare è guardare the reference per le stringhe di formattazione datetime e risolverle.

Potrebbe essere possibile utilizzare la riflessione per ottenere questo risultato oppure utilizzare il disassemblatore (ad esempio ILDASM) per trovare tutte le stringhe utilizzate in un assieme e individuare le stringhe di formattazione datetime.

In caso di smontaggio, è possibile cercare i giorni della settimana e una stringa che inizi con dddd, che dovrebbe indicare come è stato costruito l'originale.