W języku C# jak przeanalizować ciąg formatu "dd/mm/yyyy"
lub formatu "dd-mm-yyyy"
na datetime? Wystąpił błąd informujący, że mój ciąg znaków nie ma poprawnego formatu. Muszę umieć analizować wszystkie formaty, nie tylko jeden z nich.C# parsowanie dowolnego ciągu formatu daty do datetime
Odpowiedz
mm
oznacza minutę, wielkie litery MM
oznacza miesiąc.
Oprócz tego, trzeba użyć CultureInfo.InvariantCulture
jeśli chcesz zanalizować ciągi z /
jako separator daty, ponieważ jest to char zamiennik separator daty Twoim obecnym językiem jest:
Tak to działa:
DateTime.ParseExact("23/07/2013", "dd/MM/yyyy", CultureInfo.InvariantCulture);
Zobacz: The "/" Custom Format Specifier
+1 dla mm vs. MM. – Corak
Możesz użyć metody DateTime.ParseExact
z dowolnym określonym formatem.
var d = DateTime.ParseExact(token, "dd-MM-yyyy",
CultureInfo.InvariantCulture,
DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AssumeUniversal);
Twój ciąg formatu jest nieprawidłowy. "mm" jest minutą, nie miesiącem. –
@JohnKoerner dzięki za złapanie tego. – doogle
Musisz zdefiniować formaty dat, które chcesz zaakceptować. Nie ma czegoś takiego jak wszystkie formaty. Po zdefiniowaniu, które można przekazać w formacie tablicę DateTime.ParseExact
Twój kod może wyglądać następująco:
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
}
Można zdefiniować dowolny format chcesz - plus można uzyskać listę domyślnych dla danej kultury.
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();
wyjściowa:
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. Parsowanie niestandardowego formatu DateTime
- 2. Parsowanie datetime C# do javascript datetime
- 3. Parsowanie ciągu do daty bez użycia SimpleDateFormat?
- 4. Wyrównanie formatu ciągu Datetime
- 5. SWT Zmiana formatu daty DateTime
- 6. Parsowanie ciągu znaków ISO 8601 do DateTime w .NET?
- 7. Parsowanie pandy do Datetime
- 8. Konwertowanie niestandardowego formatu daty (łańcucha znaków) na datetime
- 9. Jak analizować ciąg daty formatu JSON do formatu daty
- 10. Konwersja formatu daty do celu C
- 11. Parsowanie ciągu znaków
- 12. Parsowanie 2-cyfrowe daty
- 13. Parsowanie ciągu C# LINQ wyrażenie
- 14. przekonwertować ciąg do formatu daty
- 15. WPF/C# - Zastosowanie formatu daty do wyświetlenia listy
- 16. Parsowanie sformatowanego ciągu
- 17. Parsowanie ciągów datetime z mikrosekundami
- 18. Jak mogę przekonwertować kleszcze do formatu daty?
- 19. Użyj pliku moment.js do przekonwertowania formatu daty
- 20. Ciąg Django do formatu daty:
- 21. Data JSON z tweetera do formatu C#
- 22. Parsowanie datetime w Python ..?
- 23. Przetwarzanie ciągu DateTime
- 24. MySQL - Jak przeanalizować wartość ciągu do formatu DATETIME wewnątrz instrukcji INSERT?
- 25. Jak sprawdzić poprawność formatu ciągu daty w pythonie?
- 26. Zmiana formatu daty
- 27. dodanie 1 dzień do wartości formatu DATETIME
- 28. Datetime Python do formatu znacznika schematu XML
- 29. Użyj formatu sed lub awk do ustalenia formatu daty.
- 30. Konwersja formatu daty JavaScript do żądanego formatu PHP
Pokaż nam swój kod. – SLaks
"Muszę umieć analizować wszystkie formaty" - biorąc pod uwagę, że istnieją formaty "dd/mm/yyyy" i "mm/dd/yyyy", daty dwunastej lub wcześniejszej w danym miesiącu muszą być niejednoznaczne - to problem nierozwiązywalny przez komputer. –
Pokaż nam kod, który wypróbowałeś. –