2013-05-17 6 views
0

В моей XML у меня есть значение даты, как показано ниже:Получение точного формата DateTime из файла XML

[CDATA[07/07/1980]] 

я сделать следующее, чтобы получить дату:

public static DateTime? GetDateTimeValue(string dateTimeString) 
    { 
     DateTime i; 
     if ((dataTimeString != null) && (dataTimeString.Value.Trim() != "")) 
      if (DateTime.TryParse(dateTimeString, out i)) 
       return i; 

     return null;   
    } 

Значение Я получаю 07/07/1980 12:00:00 AM.

я могу сделать следующее:

DatdTime.TryParse(dateTimeString.ToShortDateString()) 

Но я не хочу, чтобы манипулировать данными в любом случае. Я хочу получить дату как есть.

Любая помощь будет принята с благодарностью.

+1

Вместо '(dataTimeString! = Null) && (dataTimeString.Trim()! =" ")' Just 'string.IsNullOrWhiteSpace (dateTimeString)' –

+0

'dateTimeString.ToShortDateString'? Строка не является 'DateTime'. Строка также не имеет свойства 'Value' (' dataTimeString.Value.Trim'). Предоставьте код компиляции. –

+0

Все это не нужно при выполнении tryparse –

ответ

0

Это метод, который я использую, но я не использую nullable DateTime.

private static DateTime nodate = new DateTime(1900, 1, 1); 
public static DateTime NODATE { get { return nodate; } } 

public static DateTime GetDate(object obj) { 
    if ((obj != null) && (obj != DBNull.Value)) { // Databases return DBNull.Value 
    try { 
     return Convert.ToDateTime(obj); 
    } catch (Exception) { } 
    try { 
     return DateTime.Parse(obj.ToString()); 
    } catch (Exception) { } 
    } 
    return NODATE; 
} 

Я не могу всегда использовать TryParse, потому что много моего кода должен быть Compact Framework безопасны.

Если что-то пойдет не так, я увижу значение NODATE (1 января 1900 года) в моих полях даты. Достаточно безопасно догадаться, что большинство моих программ баз данных не имеют даты, если они попытаются отобразить что-то, указывающее, что они были введены 1 января 1900 года. В конце концов: у всех есть Новый год, верно? :)

+1

- DateTime.MinValue недоступна для Compact Framework? что избавит вас от необходимости определять NODATE – Jason

+0

Похож, что 'DateTime.MinValue' - DateTime (0001, 1, 1). Многие вещи могут использовать это. Мне нужно будет проверить, может ли SQLite пойти так низко. – jp2code

+1

есть также SqlDateTime.MinValue & SqlDateTime.MaxValue, которые работают с SQL-сервером, dunno about sqlite – Jason

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