0
У меня есть строка 11,111
, исходящая из базы данных. Теперь я хочу проверить, что если эта строка является дат-временем, то проанализируйте ее в datetime, но если ее нет, то оставьте ее как есть, а DateTime.Parse is анализ его на дату 01/11/0111 12:00 AM
который не соответствует действительности. Вот мой кодDateTime.Parse не работает правильно
DateTime newDateTimeValue = default(DateTime);
DateTime.TryParse(each.NewValue, out newDateTimeValue);
if (newDateTimeValue != default(DateTime))
each.NewValue = Utility.FormatDate(DateTime.Parse(each.NewValue), dateFormat, culture);
А вот FormatDate функция из класса Utility
public static string FormatDate(DateTime? dt, string dateFormat, string language)
{
if (dt.HasValue)
{
string offset = string.Format("{0:0.00}", Convert.ToDouble(HttpContext.Current.Session["Offset"]));
string offsetSign = offset.Contains("-") ? "-" : string.Empty;
if (language == "en-US")
dt = dt.Value.AddHours(Convert.ToDouble(offset.Substring(0, offset.IndexOf('.')))).AddMinutes(Convert.ToDouble(offsetSign + offset.Substring(offset.IndexOf('.') + 1, offset.Length - offset.IndexOf('.') - 1)));
else
{
try
{
dt = dt.Value.AddHours(Convert.ToDouble(offset.Substring(0, offset.IndexOf(',')))).AddMinutes(Convert.ToDouble(offsetSign + offset.Substring(offset.IndexOf(',') + 1, offset.Length - offset.IndexOf(',') - 1)));
}
catch
{
dt = dt.Value.AddHours(Convert.ToDouble(offset.Substring(0, offset.IndexOf('.')))).AddMinutes(Convert.ToDouble(offsetSign + offset.Substring(offset.IndexOf('.') + 1, offset.Length - offset.IndexOf('.') - 1)));
}
}
dateFormat = dateFormat + " hh:mm tt";
if (dateFormat == "MMM dd, yyyy hh:mm tt" || dateFormat == "dd MMM yyyy hh:mm tt")
return dt.Value.ToString(dateFormat, new CultureInfo(language));
else
return dt.Value.ToString(dateFormat, new CultureInfo("en-US"));
}
else
return string.Empty;
}
использовать 'DateTime.TryParseExact()' – DrKoch
Благодаря @DrKoch его работы! !! – Ancient