2013-05-13 1 views
0

я сталкиваюсь со следующей проблемой:Empty даты и времени в докладе

Иногда значение моего trans_in (DateTime) в моей базе данных является: 1900-01-01 00:00:00.000

и он появляется в моем докладе Telerik как этот 12:00 AM я хочу показать это текстовое поле пустым вместо того, чтобы таким образом я создать персонализированный метод:

public static string NotAttend(DateTime trans_in) 
     { 
      if (trans_in == null || trans_in.ToString().Trim() == "1900-01-01 00:00:00.000") 
      { 
       return string.Empty; 
      } 
      else 
       return trans_in.ToShortTimeString(); 
     } 

и связать текстовое поле, как это:

= OvertimeReports.CustomExpressions.NotAttend(Fields.trans_in) 

но это не исправить моя проблема все еще появляется 12:00 AM !!

ответ

2

Вашего trans_in.ToString() возвратит вам строковое представление вашего DateTime объекта, основываясь на текущую культуру, его лучше, если вы проверяете ваш DateTime как:

public static string NotAttend(DateTime trans_in) 
{ 
    if(trans_in == new DateTime(1900, 1, 1)) 
    { 
     return string.Empty; 
    } 
    else 
     return trans_in.ToShortTimeString(); 
} 
1

Проблема, что у вас есть здесь больше вопрос форматирования с .ToString преобразования

Попробуйте использовать определенный формат, что нужно в перегрузкой .ToString для этого

trans_in("yyyy-M-d HH:mm:ss.fff")

Так что в этом HH в случае, если у вас было бы 00:00 вместо 12:00

Лучшим способом было бы сравнить его как DateTime сделать DateTime obj для 19 00-1-1 затем сравнить его с trans_in.Date части, которая не потребует эта строка форматирования выдает

1

Попробуйте сравнить trans_in с default(new DateTime())

Вы не должны сравнивать дату с строки без форматирования

ссылка: http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/d0f4578c-0585-4f38-95be-569a90ebeb21/

редактировать: я вижу здесь вам лучше сравнить с DateTime.MinValue Determining whether the new date is the default new DateTime() or not

1

Вы можете обеспечить формат для вашего DateTime с помощью перекрытых функций DateTime.ToString(). HH означает время в 24 HRS где hh означает 12 HRS формат:

public static string NotAttend(DateTime trans_in) 
{ 
    if (trans_in == null || 
     trans_in.ToString("yyyy-MM-dd HH:mm:ss.fff") == "1900-01-01 00:00:00.000") 
    { 
     return string.Empty; 
    } 
    else 
    return trans_in.ToShortTimeString(); 
    } 
Смежные вопросы