Jeśli znasz dokładnie format daty/czasu (tj. Nigdy się nie zmienia i nie zależy to od kultury lub ustawień regionalnych użytkownika), możesz użyć DateTime.TryParseExact
.
Na przykład
DateTime result;
if (DateTime.TryParseExact(
str, // The string you want to parse
"dd-MM-yyyy", // The format of the string you want to parse.
CultureInfo.InvariantCulture, // The culture that was used
// to create the date/time notation
DateTimeStyles.None, // Extra flags that control what assumptions
// the parser can make, and where whitespace
// may occur that is ignored.
out result)) // Where the parsed result is stored.
{
// Only when the method returns true did the parsing succeed.
// Therefore it is in an if-statement and at this point
// 'result' contains a valid DateTime.
}
format sznurek może być całkowicie określona custom date/time format (np dd-MM-yyyy
) lub general format specifier (np g
). W przypadku tej ostatniej kultura ma znaczenie dla sformatowania daty. Na przykład w Holandii daty są zapisywane jako 26-07-2012
(dd-MM-yyyy
), podczas gdy w USA daty są zapisywane jako 7/26/2012
(M/d/yyyy
).
Jednak wszystko działa tylko wtedy, gdy ciąg znaków str
zawiera tylko datę, którą chcesz przeanalizować. Jeśli masz większy ciąg z różnymi rodzajami niechcianych znaków w okolicy daty, musisz najpierw znaleźć datę. Można to zrobić za pomocą wyrażenia regularnego, które jest zupełnie innym tematem samym w sobie. Niektóre ogólne informacje na temat wyrażeń regularnych (regex) w języku C# można znaleźć here. Odwołanie do wyrażenia regularnego to here. Na przykład datę podobną do d/M/yyyy
można znaleźć za pomocą polecenia regex \d{1,2}\/\d{1,2}\/\d{4}
.
Możliwa duplikat http://stackoverflow.com/questions/11660423/string-comparison-on-date-format-wont-work – MikeKulls
Przydatne odniesienia dla ludzie używający składni zapytania LINQ zamiast: http://stackoverflow.com/questions/9003697/how-to-i-use-tryparse-in-a-linq-query-of-xml-data –