Workout il formato stringa utilizzata per la formattazione DateTime
-
23-09-2019 - |
Domanda
Ho una stringa che rappresenta un valore DataTime, e voglio allenamento quale formato stringa è stato utilizzato per creare la stringa.
Per esempio
- Dato "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 a DateTime.Now e riguarda la CurrentCulture. Quindi, dato che abbiamo it-IT cultura
- dato "01 01 2010" Mi aspetto "MM yyyy dd"
C'è un modo semplice per fare questo?
Soluzione
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
es. 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 male
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
Altri suggerimenti
La cosa più semplice da fare è guardare la di riferimento per datetime formattazione stringhe e lavoro fuori.
Si può essere in grado di utilizzare la riflessione al fine di ottenere questo, o usare disassembler (come ILDASM ) per trovare tutte le stringhe utilizzate in un assieme e indovinare quali sono stringa di formattazione datetime.
Se disassmbling, è possibile cercare i giorni della settimana e per una stringa che inizia con dddd
, che dovrebbe dirvi come è stato costruito l'originale.