You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复DataTable日期格式?将/Date(时间戳)/转为yyyy-MM-dd HH:mm

解决DataTable中日期显示为/Date(1669623082703)/格式的问题

模型上的[DisplayFormat]特性仅在MVC服务器端视图渲染(如Html.DisplayFor)时生效,AJAX返回JSON数据时,默认序列化会将DateTime转为微软旧格式/Date(ticks)/,因此需要通过前端或后端方式处理。

方案一:前端DataTable内直接格式化日期

在DataTable的列配置中添加render函数,解析日期格式并转为目标样式:

修改后的前端代码:

<table id="FileTable" class="table table-striped table-bordered">
<thead>
    <tr>
        <th>File ID</th>
        <th>Uploader ID</th>
        <th>File Name</th>
        <th>Program</th>
        <th>Date</th>          
    </tr>
</thead>
</table>
<script>
    $(document).ready(function () {
        $("#FileTable").DataTable({
            "ajax": {
                "url": "/Student/GetExcelList",
                "type": "GET",
                "datatype": "json"
            },
            "columns": [
                { "data": "FileID" },
                { "data": "UserIDUp" },
                { "data": "FileName" },
                { "data": "TakerProgram" },
                { 
                    "data": "DateUp",
                    "render": function (data) {
                        // 提取括号内的时间戳
                        var timestamp = parseInt(data.match(/\d+/)[0]);
                        // 转换为Date对象
                        var date = new Date(timestamp);
                        // 格式化yyyy-MM-dd HH:mm
                        var year = date.getFullYear();
                        var month = String(date.getMonth() + 1).padStart(2, '0');
                        var day = String(date.getDate()).padStart(2, '0');
                        var hours = String(date.getHours()).padStart(2, '0');
                        var minutes = String(date.getMinutes()).padStart(2, '0');
                        return `${year}-${month}-${day} ${hours}:${minutes}`;
                    }
                }
            ]
        });
    });
 </script>

方案二:后端修改JSON序列化格式(从根源解决)

方法1:在Action中指定返回格式

修改GetExcelList接口的返回逻辑,直接设置日期格式:

public ActionResult GetExcelList()
{
    var data = // 你的数据查询逻辑
    // 替换默认JsonResult,指定日期格式
    return new JsonResult
    {
        Data = data,
        JsonRequestBehavior = JsonRequestBehavior.AllowGet,
        DateFormatString = "yyyy-MM-dd HH:mm"
    };
}

方法2:全局配置Json.NET序列化规则

如果项目使用Newtonsoft.Json,在全局配置中统一设置日期格式:

  • ASP.NET MVC(Global.asax.cs):
protected void Application_Start()
{
    // 其他初始化代码
    JsonConvert.DefaultSettings = () => new JsonSerializerSettings
    {
        DateFormatString = "yyyy-MM-dd HH:mm",
        Formatting = Formatting.Indented
    };
}
  • ASP.NET Core(Program.cs):
builder.Services.AddControllersWithViews()
    .AddNewtonsoftJson(options =>
    {
        options.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm";
    });

配置后,后端返回的JSON中DateTime会直接转为指定格式的字符串,前端无需额外处理。

方法3:给模型属性添加序列化特性

在模型的DateUp属性上添加Json.NET特性,指定序列化格式:

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:yyyy-MM-dd HH:mm}")]
[JsonConverter(typeof(IsoDateTimeConverter), "yyyy-MM-dd HH:mm")]
public System.DateTime? DateUp { get; set; }

内容的提问来源于stack exchange,提问作者young gnup

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 02:50:52