Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Google应用程序脚本中的时区不正确_Javascript_Google Apps Script - Fatal编程技术网

Javascript Google应用程序脚本中的时区不正确

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

我有一个GoogleApps脚本,它从电子表格的给定行中提取一个时间,然后将其转录。然而,在这个过程中,时区变得完全混乱

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

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")