如何在C#mvc5中转换字符串中的日期时间,以便它不会获得null日期时间值

时间:2015-09-24 18:25:04

标签: c# linq

我正在创建一个项目,我希望在列表中存储数据库中的日期。我使用MVC5和C#。在相应的控制器中,我将数据库中的值传递为:

var order1 = (from a in context.DB_OrderDetails
              where a.OrderId == id
              select new
              { 
                  a.ActualCompletedAt,
              }).ToList();    

在脚本中我写了

for (i = 0; i < result.order1.length; i++) {
    str += '<tr>';
    str += '<td> ' + order1[i].ActualCompletedAt + '</td>';
    str += '<tr/>';
}

但是在列表中我得到的值是日期/ 878978978979等。 在数据库中,它就像“2015-09-24 14:59:10.837”,即正确的日期和时间。 我需要在Linq查询中进行哪些修改才能使日期不为空?

3 个答案:

答案 0 :(得分:0)

您应该致电ToString并正确格式化:

ActualCompletedAt = a.ActualCompletedAt("MM/dd/yyyy")

我认为ActualCompletedAtDateTime个对象。如果这是一个可以为空的DateTime对象,那么您必须先进行检查。

ActualCompletedAt = a.ActualCompletedAt != null ? a.ActualCompletedAt.Value("MM/dd/yyyy") : ""

答案 1 :(得分:0)

这是json序列化程序处理日期的方式。我确定有一种方法可以控制它是如何完成的,但是通过在控制器中的ActualCompletedAt之后附加.ToString(),一个简单的方法是将日期作为控制器中的字符串返回。

答案 2 :(得分:0)

(修订版)

我同意PeteGO,结果看起来与null值无关。

但要回答你的问题,为避免空值,你可以使用:

var order1 = (from a in context.DB_OrderDetails
                      where a.OrderId == id
                      and a.ActualCompletedAt != null
                      select new
                     { 
                        a.ActualCompletedAt.ToString("yyyy-MM-dd hh:mm:ss.fff"),
                     }).ToList();   

然后在脚本中:

for (i = 0; i < result.order1.length; i++) {
    str += '<tr>';
    str += '<td> ' + order1[i].ActualCompletedAt + '</td>';
    str += '<tr/>';
}