2015-02-04 3 views
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; 
    } 
+4

использовать 'DateTime.TryParseExact()' – DrKoch

+0

Благодаря @DrKoch его работы! !! – Ancient

ответ

0

Может помочь другим

public void GetDate(string dateString) 
{ 
DateTime result; 
CultureInfo provider = CultureInfo.InvariantCulture; 
string format = "d"; 
try 
{ 
    if(DateTime.TryParseExact(dateString,provider, DateTimeStyles.None, out result)) 
    { 
     Console.WriteLine("{0} converts to {1}", dateString, result.ToString()); 
    } 
    else 
    { 
     Console.WriteLine("{0} is not in the correct format", dateString); 
    } 

} 
catch(FormatException) 
{ 
    Console.WriteLine("{0} is not in the correct format", dateString); 
} 

} 
Смежные вопросы