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

通过Google Apps Script读取Google Sheet日期值与原表不符的问题

Google Apps Script读取Sheet日期出现时间偏差的解决办法

为啥会出现这个问题

这种多出50分39秒的偏差,本质是Google Sheets和JavaScript的日期体系不兼容导致的:

  • Sheets的日期是从1900年1月0日开始算的序列号(为了兼容Excel当年的1900闰年bug),而JS的Date对象是从1970年1月1日UTC开始计时的。
  • 用getValue()读日期时,脚本会自动把Sheet的序列号转成JS Date,但浮点数精度或者兼容逻辑的问题,就会搞出这种奇怪的时间偏移。

怎么解决

方法1:直接读显示的文本(最省心)

用getDisplayValue()拿单元格显示的日期文本,再转成Date,完全和你在Sheet里看到的一致:

val = new Date(startCell.offset(-21,i).getDisplayValue());

方法2:把时间部分砍掉

如果一定要用getValue()拿Date对象,手动把时分秒改成0,只留年月日:

val = startCell.offset(-21,i).getValue();
// 截断时间,只保留纯日期
val = new Date(val.getFullYear(), val.getMonth(), val.getDate());

方法3:检查单元格的真实值

右键Sheet里的日期单元格,看看单元格格式是不是纯日期(不带时间)。如果格式包含时间,可能单元格本身就存了时间值,只是被格式隐藏了,这时候要么改单元格格式,要么调整脚本逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 02:10:34