Parsuję wartość DateTime na stronie ASP.NET WebForms
, a ciąg daty wciąż jest odrzucany przez metodę DateTime.TryParseExact()
, mimo że wyraźnie pasuje do jednego z dostarczonych ciągów formatów.DateTime.TryParseExact() odrzuca prawidłowe formaty
Wydaje zawieść na moim komputerze deweloperskim w domu, ale działa na serwerze produkcyjnym, więc myślę lokalnych ustawień daty jest zaangażowany, ale błąd ten występuje nawet wtedy, gdy dostarczy przedmiot IFormatProvider (CultureInfo)
jako parametr
Oto kod:
DateTime startDate;
string[] formats = { "dd/MM/yyyy", "dd/M/yyyy", "d/M/yyyy", "d/MM/yyyy",
"dd/MM/yy", "dd/M/yy", "d/M/yy", "d/MM/yy"};
var errStart = row.FindControl("errStartDate"); //my date format error message
if (!DateTime.TryParseExact(txtStartDate.Text, formats, null, DateTimeStyles.None, out startDate))
{
errStart.Visible = true; //we get here even with a string like "20/08/2012"
return false;
}
else
{
errStart.Visible = false;
}
Uwaga daję się null FormatProvider
w powyższym ale ten sam problem występuje, gdy zapewniają CultureInfo
przedmiot (CultureInfo provider = new CultureInfo("en-US"))
dla tego parametru.
Czego mi brakuje?
W amerykańskiej kulturze, formaty daty są m/d/r nie D/M/Y – StuartLC
Nawet bez wymieniania FormatProvider, kod ten wydaje się działać dobrze dla mnie. Spróbuj podać InvariantCulture. – danish