Ответ 1
Try:
DateTime.TryParseExact(txtStartDate.Text, formats,
System.Globalization.CultureInfo.InvariantCulture,
System.Globalization.DateTimeStyles.None, out startDate)
Я анализирую значение DateTime на странице ASP.NET WebForms
, и строка даты продолжает отклоняться методом DateTime.TryParseExact()
, даже если она явно соответствует одной из прилагаемых строк формата.
Кажется, что он не работает на моей машине разработки дома, но работает на сервере производства, поэтому я думаю о том, что задействованы локальные параметры даты, но эта ошибка возникает, даже когда я поставляю объект IFormatProvider (CultureInfo)
в качестве параметра
Здесь код:
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;
}
Примечание. Я указываю null FormatProvider
в приведенном выше примере , но. Эта проблема возникает, когда я предоставляю объект CultureInfo
как
(CultureInfo provider = new CultureInfo("en-US"))
для этого параметра.
Что мне не хватает?
Try:
DateTime.TryParseExact(txtStartDate.Text, formats,
System.Globalization.CultureInfo.InvariantCulture,
System.Globalization.DateTimeStyles.None, out startDate)
Это простой метод, используйте ParseExact
CultureInfo provider = CultureInfo.InvariantCulture;
DateTime result;
dateString = "Sun 08 Jun 2013 8:30 AM -06:00";
format = "ddd dd MMM yyyy h:mm tt zzz";
result = DateTime.ParseExact(dateString, format, provider);
Это должно сработать для вас.
Здесь вы можете проверить несколько вещей.
DateTime.TryParseExact
. Проверьте полный список форматов, здесь. CultureInfo.InvariantCulture
, что, скорее всего, добавит проблемы. Поэтому вместо того, чтобы передать значение NULL
или на CultureInfo provider = new CultureInfo("en-US")
, вы можете записать его как.
.
if (!DateTime.TryParseExact(txtStartDate.Text, formats,
System.Globalization.CultureInfo.InvariantCulture,
System.Globalization.DateTimeStyles.None, out startDate))
{
//your condition fail code goes here
return false;
}
else
{
//success code
}