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

Google Sheets Script中new Date()带时区返回错误时间的问题

问题分析与解决

你的问题出在12小时制格式的使用上,hh是12小时制的小时占位符,它会把18点(下午6点)转换成06,但没有额外的上下午标识(AM/PM),再加上单元格格式也用了hh:mm,就会直接显示成早上6点的样子。

两种解决办法

办法一:改用24小时制显示

把格式化字符串里的hh换成HH(24小时制占位符),同时调整单元格的数字格式:

var nowvalue = Utilities.formatDate(new Date(), "GMT-8", "MM/dd/yyyy HH:mm");
spreadsheet.getActiveRange().setValue(nowvalue);
spreadsheet.getActiveRangeList().setNumberFormat('ddd" "m"/"d" "HH:mm');

这样下午6点就会直接显示为18:00,不会有歧义。

办法二:保留12小时制并显示上下午标识

如果习惯用12小时制,就在格式化字符串和单元格格式里加上aa(显示AM/PM):

var nowvalue = Utilities.formatDate(new Date(), "GMT-8", "MM/dd/yyyy hh:mm aa");
spreadsheet.getActiveRange().setValue(nowvalue);
spreadsheet.getActiveRangeList().setNumberFormat('ddd" "m"/"d" "hh:mm aa');

这样下午6点会显示为06:00 PM,明确区分上下午。

为什么其他时区看起来正常?

  • 设为GMT+4时,PST下午6点(GMT-8)对应的GMT+4时间是次日早上6点,这时候hh:mm显示的06:00刚好是实际时间,所以看起来正确;
  • 设为GMT时,PST下午6点对应GMT次日2点,hh:mm显示02:00也是该时区的正确12小时制时间,所以没出问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 13:22:32