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

预填充Google Form始终给DateTime对象加4小时的问题求助

无需手动调整时间的解决方案

问题核心:直接使用new Date(data[1])解析纽约时区的时间字符串时,Apps Script会默认按UTC规则处理该字符串,导致生成的时间戳与预期的纽约时间存在偏移,最终表单显示时出现4小时误差。

不用手动减去时间的话,通过明确指定时区解析时间字符串即可修复:

修改后的代码:

// Populate Timestamp
formItem = formItems[0].asDateTimeItem();
// 指定纽约时区解析时间字符串,格式需与data[1]的实际格式匹配
const targetTimeZone = "America/New_York";
const dateFormat = "yyyy-MM-dd HH:mm:ss"; // 示例格式,根据你的data[1]调整
const parsedDate = Utilities.parseDate(data[1], targetTimeZone, dateFormat);
response = formItem.createResponse(parsedDate);
formResponse.withItemResponse(response);

注意点:

  • dateFormat参数必须严格匹配data[1]的时间字符串格式,比如如果你的data[1]是"May 20, 2024 2:30 PM",格式就要改成"MMM dd, yyyy h:mm a"。
  • Utilities.parseDate会按照指定的纽约时区解析字符串,生成的Date对象内部时间戳完全对应预期的纽约时间,传给表单后会自动适配表单设置的时区,不会再出现偏移。
  • 保持脚本和表单的时区设置为America/New_York(你已确认此配置正确)。

内容的提问来源于stack exchange,提问作者Joshua Pelton-Stroud

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 03:02:05