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

Google Apps Script日期对比问题:两类日期值如何统一比较?

解决Google Apps Script与电子表格日期对比的问题

问题根源

你在Google Apps Script里写var now = Date()时,Date()作为函数调用会直接返回日期格式的字符串,而非Date对象。此时调用valueOf()实际上是调用字符串的valueOf()方法,自然返回字符串本身,而非时间戳整数。

正确实现方式

方法1:获取正确的当前时间戳

改用new Date()生成Date对象,再调用valueOf()就能得到和电子表格一致的时间戳整数,直接对比数值即可:

// 正确创建当前时间的Date对象
var now = new Date();
// 获取时间戳整数
var nowTimestamp = now.valueOf();
// 电子表格提取的时间戳(示例值)
var sheetTimestamp = 1707409320000;

// 直接对比整数
if (nowTimestamp > sheetTimestamp) {
  Logger.log("当前时间晚于表格日期");
} else if (nowTimestamp < sheetTimestamp) {
  Logger.log("当前时间早于表格日期");
} else {
  Logger.log("时间完全一致");
}

方法2:将字符串日期转换为时间戳

如果已经得到了字符串格式的日期(比如误写Date()得到的结果),可以把它传入new Date()转换成Date对象后再取时间戳:

// 已有的日期字符串
var dateStr = "Thu Feb 08 2024 10:31:25 GMT-0600 (Central Standard Time)";
var dateObj = new Date(dateStr);
var timestamp = dateObj.valueOf();

// 和电子表格时间戳对比
var sheetTimestamp = 1707409320000;
console.log(timestamp === sheetTimestamp); // 输出对比结果布尔值

方法3:转换为Date对象直接对比

也可以把电子表格的时间戳转换成Date对象,直接和当前时间的Date对象用比较运算符对比:

var sheetTimestamp = 1707409320000;
var sheetDate = new Date(sheetTimestamp);
var nowDate = new Date();

if (nowDate > sheetDate) {
  Logger.log("当前时间晚于表格日期");
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 09:33:14