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

如何在Google Apps Script中将日期时间转换为数值?

如何在Google Apps Script中将日期时间转换为数值

在Google Sheets中,日期和时间本质上是以数值存储的:1代表一整天,1小时对应1/24,1分钟对应1/(24*60),以此类推。在Google Apps Script中实现转换,核心是获取日期时间对应的原始数值,或是将Date对象转换为该数值。

修正你提供的示例代码

你给出的代码存在问题:直接对Range单元格对象做减法运算无法得到正确结果,必须先通过getValue()获取单元格内的日期时间值(返回Date对象或对应数值)。修正后的代码如下:

function calculateDuration() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const maintenanceSheet = ss.getActiveSheet();
  
  // 获取单元格的日期时间值(Date对象)
  const startTime = maintenanceSheet.getRange(3, 6).getValue();
  const endTime = maintenanceSheet.getRange(3, 11).getValue();
  
  // 计算时长(小时数):两个日期相减得到毫秒数,转换为小时
  const durationHours = (endTime - startTime) / (1000 * 60 * 60);
  
  // 将结果写入目标单元格
  maintenanceSheet.getRange(3, 13).setValue(durationHours);
}

其他常见转换场景

  • 将Date对象转换为Google Sheets数值:
    若你有一个Date对象,想转换成Sheets识别的日期数值,可计算该日期与Sheets起始日期(1899年12月30日)的天数差:
    function dateToSheetsValue(date) {
      const sheetsEpoch = new Date('1899-12-30');
      const diffMs = date - sheetsEpoch;
      return diffMs / (1000 * 60 * 60 * 24); // 转换为天数
    }
    
  • 直接读取单元格的日期数值:
    若不需要Date对象,想直接获取单元格存储的原始数值,可使用parseFloat处理getValue()的结果:
    const dateValue = parseFloat(maintenanceSheet.getRange(3, 6).getValue());
    

内容的提问来源于stack exchange,提问作者Araña Villaruel Ji-mhel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 04:24:11