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

JavaScript中Date()函数解析PostgreSQL空日期值异常问题

解决JavaScript Date处理null日期字段的问题

问题根源

当数据库返回的dateResolved字段为null时:

  • new Date(null)会被解析为时间戳0,对应1970年1月1日(纪元起始日期)
  • 直接调用Date(null)作为普通函数时,会返回当前日期的字符串,而非传入值对应的日期

这就是你看到单据日期异常的核心原因——只要有一条数据的dateResolved是null,错误的处理逻辑就会导致显示混乱。

解决方案

在渲染dateResolved字段前,先判断其是否为null或undefined,根据状态显示不同内容:

修改后的代码

var JavaTicketData = xhttp.responseText;
var andy = JSON.parse(JavaTicketData);
var data = " ";

for(let i = 0; i < andy.length; i++)
{  
   // 处理办结日期:判断是否为null,是则显示"未办结",否则格式化日期
   const resolvedDate = andy[i].dateResolved 
     ? new Date(andy[i].dateResolved).toDateString() 
     : "未办结";

   data += "<tr class = 'suckerFish'>" +
   "<td class='sonOfSuckerFish'>" + andy[i].ticketNumber + "</td> " + 
   "<td class='sonOfSuckerFish'>" + andy[i].ticketsDescription +   "</td> " + 
   "<td class='sonOfSuckerFish'>" + andy[i].ticketsStatus + "</td> " +
   "<td class='sonOfSuckerFish'>" + andy[i].reimbursementAmount + "</td> "+ 
   "<td class='sonOfSuckerFish'>" + new Date(andy[i].dateSubmitted).toDateString() + "</td> " + 
   "<td class='sonOfSuckerFish'>" + resolvedDate + "</td> " + 
   "<td class='sonOfSuckerFish'>" + andy[i].reimbursementType + "</td> " + 
   "<td class='sonOfSuckerFish'>" + andy[i].employeeID + "</td></tr>";
}

let Outter = "<table id = 'AndreTable'><tr><th>Ticket Number</th><th>Ticket Description</th><th>Ticket Status</th>"
+ "<th>Reimbursement Amount </th><th>Date Submitted </th><th>Date Resolved </th> <th>Reimbursement Type </th>"
+ "<th> Employee ID </th> </tr>";

document.getElementById("ManagerDisplay").innerHTML = Outter + data + "</table>";

额外优化建议

  • 把日期格式化逻辑封装成独立函数,方便复用和维护:
    function formatDate(dateValue) {
      return dateValue ? new Date(dateValue).toDateString() : "未办结";
    }
    
    循环中直接调用:formatDate(andy[i].dateResolved)即可
  • 如果需要更精细的日期格式(比如包含时间),可以使用toLocaleString()或自定义格式化逻辑,避免依赖toDateString()的默认格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 10:10:01