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

如何在JavaScript中实现表格内Timestamp转Datetime?

解决方法:在页面加载后用JavaScript批量转换时间戳

我明白你的问题了——你直接在表格单元格里写convertTimestamp({!dt.timestamp});的方式是行不通的,因为服务器渲染页面时,只会把这段代码当成纯文本输出,浏览器不会自动执行它。咱们换个思路,通过先存储时间戳、再在页面加载后批量转换的方式来实现:

步骤1:修改HTML,把时间戳存在单元格的属性里

把原来的Date列的<td>改成下面这样,把时间戳存储在自定义的data-timestamp属性中,而不是直接写函数调用:

<td data-timestamp="{!dt.timestamp}"></td>

服务器渲染后,每个这个单元格都会带上类似data-timestamp="1488966492914"的属性,方便后续JavaScript读取。

步骤2:添加页面加载后的批量转换逻辑

在你的JavaScript代码末尾,添加一段监听页面加载完成的逻辑,遍历所有带data-timestamp属性的单元格,调用转换函数并填充结果:

function addZero(i) {
  if (i < 10) {
    i = "0" + i;
  }
  return i;
}

function convertTimestamp(pTimestamp) {
  var result = new Date(pTimestamp);
  var dd = addZero(result.getDate());
  var mm = addZero(result.getMonth() + 1); // January is 0!
  var yyyy = result.getFullYear();
  var HH = addZero(result.getHours());
  var min = addZero(result.getMinutes());
  result = yyyy + '/' + mm + '/' + dd + ' ' + HH + ':' + min;
  return result;
}

// 页面加载完成后执行转换逻辑
window.addEventListener('DOMContentLoaded', function() {
  // 获取表格中所有带data-timestamp属性的单元格
  const timestampCells = document.querySelectorAll('#resulttable td[data-timestamp]');
  
  // 遍历每个单元格,转换时间戳并填充内容
  timestampCells.forEach(cell => {
    // 取出时间戳并转成数字(因为属性值是字符串)
    const timestamp = parseInt(cell.getAttribute('data-timestamp'));
    // 调用转换函数,把结果写入单元格
    cell.textContent = convertTimestamp(timestamp);
  });
});

为什么这样能生效?

  1. 服务器先完成页面渲染,把每个记录的时间戳存在对应单元格的data-timestamp属性里;
  2. 当页面完全加载后,JavaScript会自动触发DOMContentLoaded事件,遍历所有目标单元格;
  3. 对每个单元格,取出时间戳、调用你的转换函数,最后把格式化后的时间写入单元格,这样就能显示你想要的2017/03/08 04:48格式了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:25:03