0

我面临以下问题:

有时我的数据库中我的 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

4

4 回答 4

2

你会根据你当前的文化trans_in.ToString()返回你的对象的字符串表示,如果你检查你的喜欢会更好:DateTimeDateTime

public static string NotAttend(DateTime trans_in)
{
   if(trans_in == new DateTime(1900, 1, 1))
   {
        return string.Empty;
   }
    else
        return trans_in.ToShortTimeString();
}
于 2013-05-13T10:56:24.017 回答
1

您在这里遇到的问题更多是.ToString转换的格式问题

尝试在 .ToString 重载中为此使用您需要的特定格式

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

因此,在这种HH情况下,您会将其设置为 00:00 而不是 12:00

更好的方法是将其与DateTime为 1900-1-1 制作 DateTime obj 进行比较,然后将其与trans_in.Date不涉及此字符串格式问题的部分进行比较

于 2013-05-13T10:54:36.567 回答
1

尝试将 trans_in 与default(new DateTime())

您不应该在不格式化的情况下将日期与字符串进行比较

参考: http ://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/d0f4578c-0585-4f38-95be-569a90ebeb21/

编辑:我在这里看到你最好与DateTime.MinValue 确定新日期是否是默认的 new DateTime()进行比较

于 2013-05-13T10:54:55.277 回答
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();
  }
于 2013-05-13T10:59:37.553 回答