javascript - 谷歌应用脚本从电子表格中读取不同的时区
问题描述
我有一个 Google App 脚本,它从电子表格中读取包含两个日期的一行。
这两个日期是用不同的时区读取的,我不明白为什么。
单元格内容为:
25/12/1941 16/02/2021
日期被通读
var dataRng = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Elenco').getRange("G"+rowElenco+":AC"+rowElenco);
var dati = dataRng.getValues();
第一个日期读作
Thu Dec 25 1941 00:00:00 GMT+0200 (Central European Standard Time)
第二个日期是
Tue Feb 16 2021 00:00:00 GMT+0100 (Central European Standard Time)
为什么第一个日期是 GMT+"?
我(想我)已经正确设置了 SpreadSheet 和 Script 时区:
Logger.log(Session.getScriptTimeZone());
Logger.log(SpreadsheetApp.getActiveSpreadsheet().getSpreadsheetTimeZone());
输出:
03:49:18 Informazioni Europe/Rome
03:49:18 Informazioni Europe/Rome
这会导致问题,因为我尝试格式化日期和
var dtNascita = Utilities.formatDate(dati[0][11], "GMT+1", "dd/MM/yy");
变成
dtNascita: "24/12/41"
我错过了什么?
解决方案
您必须在转换日期格式时设置时区,以便始终考虑相同的值:
var ss = SpreadsheetApp.getActiveSpreadsheet();
Utilities.formatDate(dati[0][11], ss.getSpreadsheetTimeZone(), "dd/MM/yy");
https://www.analyticstraps.com/utc-vs-gmt-vs-getspreadsheettimezone/
推荐阅读
- node.js - 无法获取 req.files。React-native - Node js (multer)
- sql - Oracle Select Query Populate 默认值为 NA 在行中
- javascript - React 路由器路径中的领先标签
- javascript - 在 React 组件上显示对象数组中的数据:TypeError:data.map 不是函数
- javascript - 从 Google 地球引擎中的图像集合中导出图像 - 超出用户内存限制
- apache - apache2 mod_rewrite 没有按预期工作
- reactjs - React Swiper.js在从数组呈现的索引处删除幻灯片
- flutter - 可以在audio_service中使用flutter_sound吗?
- sql - 我如何调整大小和空间
- javascript - 如何在单个 React 组件中为第三方组件应用自定义样式而不影响其在其他组件中的样式?