In C# come si analizza una stringa di formato "dd/mm/yyyy"
o il formato "dd-mm-yyyy"
in data/ora? Viene visualizzato un errore che indica che la mia stringa non è nel formato corretto. Devo essere in grado di analizzare tutti i formati non solo uno di essi.C# analizzando qualsiasi stringa di formato data su datetime
risposta
mm
significa minuto, maiuscolo MM
significa mese.
Oltre a questo, è necessario utilizzare CultureInfo.InvariantCulture
se si vuole analizzare le stringhe con /
come separatore della data poiché questo è il carattere di sostituzione per il separatore della data della vostra cultura corrente:
Così funziona:
DateTime.ParseExact("23/07/2013", "dd/MM/yyyy", CultureInfo.InvariantCulture);
Vedere: The "/" Custom Format Specifier
+1 per mm vs. MM. – Corak
È possibile utilizzare il metodo DateTime.ParseExact
con qualsiasi formato specificato.
var d = DateTime.ParseExact(token, "dd-MM-yyyy",
CultureInfo.InvariantCulture,
DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AssumeUniversal);
La stringa del formato è errata. 'mm' è minuto, non mese. –
@JohnKoerner grazie per averlo capito. – doogle
È necessario definire i formati di data che si desidera accettare. Non esistono cose come tutti i formati. Dopo aver definito che è possibile passare serie formato DateTime.ParseExact
Il codice può assomigliare a questo:
string[] formats = new string[2] {"dd/MM/yyyy", "dd-MM-yyyy"};
string date = "23-02-2013";
try
{
DateTime result = DateTime.ParseExact(date, formats, CultureInfo.InvariantCulture, DateTimeStyles.AssumeLocal);
}
catch (FormatException)
{
// your error handling code here
}
È possibile definire qualsiasi formato che ti piace - più si può ottenere un elenco di valori di default per una determinata cultura.
var ci = new CultureInfo("en-US");
var formats = new[] { "M-d-yyyy", "dd-MM-yyyy", "MM-dd-yyyy", "M.d.yyyy", "dd.MM.yyyy", "MM.dd.yyyy" }
.Union(ci.DateTimeFormat.GetAllDateTimePatterns()).ToArray();
DateTime.ParseExact("07/23/2013", formats, ci, DateTimeStyles.AssumeLocal).Dump();
DateTime.ParseExact("07-23-2013", formats, ci, DateTimeStyles.AssumeLocal).Dump();
DateTime.ParseExact("23-07-2013", formats, ci, DateTimeStyles.AssumeLocal).Dump();
DateTime.ParseExact("23.07.2013", formats, ci, DateTimeStyles.AssumeLocal).Dump();
uscita:
7/23/2013 12:00:00 AM
7/23/2013 12:00:00 AM
7/23/2013 12:00:00 AM
7/23/2013 12:00:00 AM
- 1. Formato stringa su datetime con fuso orario
- 2. MVC DateTime binding con formato data errato
- 3. Allineamento formato stringa data/ora
- 4. ordinale Formato data C#
- 5. Formato DateTime in Xamarin Forms to Device Formato stringa
- 6. JodaTime DateTime, data ISO8601 GMT formato
- 7. Formato stringa datetime predefinito con fuso orario
- 8. Imposta formato DateTime predefinito C#
- 9. Deserialize ISO 8601 data stringa di tempo per C# DateTime
- 10. WPF Formato stringa multibinding data
- 11. Converti stringa con formato sconosciuto (qualsiasi formato) fino ad oggi
- 12. formato una stringa datetime in volta solo
- 13. C# DateTime Parse/converti questo formato "20120314T130000"
- 14. Formato data Java in formato data JavaScript
- 15. xsl Formato data (stringa + concatenare?)
- 16. Converti stringa in data/ora utilizzando C#
- 17. DateTime formato stringa ultima cifra dell'anno
- 18. DateTime.Parse Formato data americana C#
- 19. Workout il formato di stringa utilizzato per la formattazione DateTime
- 20. Come convertire il formato datetime in formato data nel report Crystal usando C#?
- 21. Haskell parsec analizzando una stringa di elementi
- 22. formato una stringa di data in PHP
- 23. data di sql convertire in formato stringa
- 24. Converti DateTime nel formato UK
- 25. Data JSON dal formato tweeter a C#
- 26. DateTime.Parse formato della data
- 27. Formato data di analisi Python, ignora le parti della stringa
- 28. Conversione di un formato di data personalizzato (stringa) a un valore di data
- 29. datetime da stringa in Python, formato stringa best-guessing
- 30. Formato data negozio in elasticsearch
Mostraci il tuo codice. – SLaks
"Devo essere in grado di analizzare tutti i formati" - dato che esistono entrambi i formati 'gg/mm/aaaa' e' mm/gg/aaaa', qualsiasi data per il dodicesimo o prima del mese deve essere ambigua - è un problema irrisolvibile da un computer. –
Mostraci il codice che hai provato. –