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

如何将UNIX epoch时间戳转换为Google Sheets日期时间值

原有代码的问题
  • 冗余的整列读取逻辑:自定义函数直接通过参数接收传入的单元格值即可,你写的getRange('L:L').getValue()只会读取L1单元格的内容,后续直接被覆盖,属于完全无效的代码,还会拖慢函数运行速度
  • 变量重复定义:连续两次用var d赋值,第一次的取值逻辑没有任何作用
  • 不支持批量计算:没法直接套用在整列上,只能手动给每个单元格写公式,效率极低
  • 缺少异常兼容:碰到空单元格、非数值格式的内容时会直接返回错误值,影响表格正常显示
修正后的可运行代码
/**
 * 将秒级epoch时间戳转换为表格时区下的可读日期时间
 * @param {number|Array<Array<number>>} input 秒级时间戳,支持单个值/整列范围传入
 * @return {string|Array<Array<string>>} 格式化后的日期时间
 * @customfunction
 */
function TIME_TO_DATE(input) {
  const tz = SpreadsheetApp.getActiveSpreadsheet().getSpreadsheetTimeZone();
  const formatStr = 'dd-MM-yyyy hh:mm:ss a';
  
  // 处理批量传入的整列/范围值
  if (Array.isArray(input)) {
    return input.map(row => row.map(cellVal => {
      // 空单元格直接返回空值,避免报错
      if (!cellVal && cellVal !== 0) return '';
      // 秒级时间戳转毫秒生成日期对象
      const dateObj = new Date(cellVal * 1000);
      return Utilities.formatDate(dateObj, tz, formatStr);
    }))
  }

  // 处理单个单元格传入的情况
  if (!input && input !== 0) return '';
  const singleDate = new Date(input * 1000);
  return Utilities.formatDate(singleDate, tz, formatStr);
}
使用步骤
  • 打开表格顶部菜单栏的「扩展程序」→「Apps Script」,把上面的代码全量粘贴到脚本编辑器里,点击保存按钮给项目随便命个名,之后回到表格页面刷新等待5-10秒让函数加载完成
  • 转换L列整列时间戳:找一个空白列的首行单元格,输入公式 =TIME_TO_DATE(L:L) 按回车,会自动批量完成整列转换
  • 转换M列整列时间戳:操作逻辑和L列一致,公式写为 =TIME_TO_DATE(M:M) 即可
  • 转换单个单元格:比如需要转换L2单元格的时间戳,直接在目标单元格输入 =TIME_TO_DATE(L2) 就能得到结果

注意:如果你的时间戳是13位的毫秒级epoch格式,把代码里所有的*1000删掉再保存,否则转换出来的时间会偏差1000倍

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 01:27:28