Google App Script中去除时间值内日期部分的问题求助
问题根源
你当前给时间字段存入的是完整的Date对象,本身自带年月日信息,你设置的setNumberFormat仅修改了单元格的显示效果,不会修改对象的底层存储内容,因此点击进入编辑状态时,会自动展示完整的日期+时间格式,部分对日期敏感的公式引用该字段时也会读取到额外的日期参数导致计算错误。
修复方案
如果要保留时间的数值属性方便后续公式计算(比如计算工时差),可以将时间值转换为当日的纯时间偏移量,仅保留时分分量,修改对应代码行即可:
原来的时间写入代码:
mainSheet.getRange(lastRow + 1, 3).setValue(new Date()).setNumberFormat("hh:mm A/P").setHorizontalAlignment("center").setFontSize(12);
修改后代码:
const now = new Date(); // 计算当日0点到当前时间的毫秒差,转换为天数占比,仅保留时间分量 const timeOnly = (now - new Date(now.getFullYear(), now.getMonth(), now.getDate())) / 86400000; mainSheet.getRange(lastRow + 1, 3).setValue(timeOnly).setNumberFormat("hh:mm A/P").setHorizontalAlignment("center").setFontSize(12);
效果说明
修改后单元格底层仅存储纯时间值,没有任何日期信息:
- 非编辑状态下仍按
hh:mm A/P格式展示 - 点击进入编辑状态时不会显示日期部分,仅展示时间
- 其他工作表的公式引用该字段时,仅读取到时间数值,不会受额外日期参数干扰
内容的提问来源于stack exchange,提问作者Jessica Verango
相关产品推荐
相关产品推荐

