javascript - Google Apps 脚本中的时区不正确

标签 javascript google-apps-script

我有一个 Google Apps 脚本,它从电子表格上的给定行中提取时间,然后转录它。然而,时区在此过程中变得完全困惑。

相关代码(功能位被剪掉,因为我认为它们不相关):

var timezone = "GMT+" + new Date().getTimezoneOffset()/60;
function dysfunction(row) {
  this.time = new Date (sheet.getRange(row,6).getValue());
  this.time.setFullYear(2020);
  this.timeString = Utilities.formatDate(this.time, timezone, "hh:mm a");
  Logger.log(timezone);
  Logger.log(this.time);
  Logger.log(this.timeString);
}

Stackdriver 登录执行:

May 4, 2020, 9:43:52 PM Info    GMT+6
May 4, 2020, 9:43:52 PM Info    Wed Dec 30 14:00:00 GMT-07:00 2020
May 4, 2020, 9:43:52 PM Info    03:00 AM

我的正确时区实际上是 GMT-07:00,但由于某种原因,脚本将我的时区检测为 GMT+6。我已在项目属性中设置了正确的时区,甚至在 list 中将时区声明为“美国/埃德蒙顿”。

下一步我该去哪里找出为什么这个东西对正确读取时区不感兴趣?

最佳答案

我想提出以下修改。

来自:

Utilities.formatDate(this.time, timezone, "hh:mm a")

致:

Utilities.formatDate(this.time, SpreadsheetApp.getActiveSpreadsheet().getSpreadsheetTimeZone(), "hh:mm a")

引用文献:

关于javascript - Google Apps 脚本中的时区不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61605483/

相关文章:

javascript - 在函数中插入 'continue' 语句,稍后在另一个函数中调用 'For loop' 语句

google-apps-script - 使用 Google Sheet Add-on 时 Stackdriver 中 "Script delayed (xx min) waiting for quota"的含义

javascript - 主干路由器监听器未命中哈希标签

javascript - 如何验证单选按钮和文本字段javascript

javascript - vue.js -- 无法通过 css 更改 svg 的样式,并且在 dom 中它应用 element.style 而不是类名

javascript - 在 foreach 循环中获取主干模型

javascript - .setValue() 对 Google Sheets 脚本不一致

javascript - 'focus'什么时候调用 'autocomplete'

google-apps-script - 数据洞察看不到 Google 表格公式结果

javascript - 如何从正则表达式替换中省略特定字符串?