Javascript Google应用程序脚本中的时区不正确
我有一个GoogleApps脚本,它从电子表格的给定行中提取一个时间,然后将其转录。然而,在这个过程中,时区变得完全混乱 相关代码(功能位被剪掉,因为我认为它们不相关):Javascript Google应用程序脚本中的时区不正确,javascript,google-apps-script,Javascript,Google Apps Script,我有一个GoogleApps脚本,它从电子表格的给定行中提取一个时间,然后将其转录。然而,在这个过程中,时区变得完全混乱 相关代码(功能位被剪掉,因为我认为它们不相关): var timezone=“GMT+”+新日期().getTimezoneOffset()/60; 功能失调(世界其他地区){ this.time=新日期(sheet.getRange(第6行).getValue()); 这是一个完整的年份(2020年); this.timeString=Utilities.formatDa
var timezone=“GMT+”+新日期().getTimezoneOffset()/60;
功能失调(世界其他地区){
this.time=新日期(sheet.getRange(第6行).getValue());
这是一个完整的年份(2020年);
this.timeString=Utilities.formatDate(this.time,时区,“hh:mm a”);
Logger.log(时区);
Logger.log(这次);
Logger.log(this.timeString);
}
我想提出以下修改
发件人:
致:
参考资料:
Utilities.formatDate(this.time,timezone,“hh:mm a”)
修改为Utilities.formatDate(this.time,SpreadsheetApp.getActiveSpreadsheet().getSpreadsheetTimeZone(),“hh:mm a”)
和/或Utilities.formatDate(this.time,Session.getScriptTimeZone(),“hh:mm a”)
,您将检索哪些值?,请确保电子表格和脚本具有完全相同的时区。否则,您可能会得到错误的结果,如中所示。此外,请使用@Tanaike建议的方法检索时区。@Tanaike找到了。将时区变量更改为SpreadsheetApp.getActiveSpreadsheet().getSpreadsheetTimeZone()。现在它可以很好地工作。但是,我不能将您的评论标记为解决方案-请随意添加,我会检查它。谢谢。谢谢您的回复。我很高兴您的问题得到解决。我将其作为一个答案发布。您能确认吗?谢谢!它可以工作,但需要稍作修改-var d=new Date();var date=Utilities.formatDate(d,sheet.getSpreadsheetTimeZone(),“hh:mm a”)
,作为已收到工作表obj的var的工作表
Utilities.formatDate(this.time, timezone, "hh:mm a")
Utilities.formatDate(this.time, SpreadsheetApp.getActiveSpreadsheet().getSpreadsheetTimeZone(), "hh:mm a")