如何修复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
相关产品推荐
相关产品推荐

