如何在c# mvc5中转换字符串中的日期时间,这样它就不会得到空日期时间值

本文关键字:日期 时间 转换 mvc5 字符串 | 更新日期: 2023-09-27 18:14:22

我正在创建一个项目,在其中我想从我的数据库中存储一个列表中的日期。我使用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查询做什么修改,使日期不为空?

如何在c# mvc5中转换字符串中的日期时间,这样它就不会得到空日期时间值

您应该调用ToString并正确格式化:

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

我假设ActualCompletedAt是一个DateTime对象。如果这是一个可空的DateTime对象,那么您必须首先进行检查。

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

json序列化器就是这样处理日期的。我确信有一种方法来控制它是如何完成的,但一个简单的修复是返回日期作为一个字符串在控制器中,通过附加。tostring()后的ActualCompletedAt在控制器。

(UPDATED)

我同意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/>';
}