【问题标题】:Empty datetime in the report报告中的空日期时间
【发布时间】:2013-05-13 10:46:28
【问题描述】:

我面临以下问题:

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

【问题讨论】:

    标签: c# asp.net datetime telerik telerik-reporting


    【解决方案1】:

    您的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();
    }
    

    【讨论】:

      【解决方案2】:

      尝试将 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

      【讨论】:

        【解决方案3】:

        您可以使用 DateTime.ToString() 的覆盖函数为您的 DateTime 提供格式。 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();
          }
        

        【讨论】:

          【解决方案4】:

          您在这里遇到的问题更多是.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 部分进行比较

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多