google-apps-script - Google 表格脚本中的日期格式问题
问题描述
我正在编写一个简单的表格脚本,该脚本从文件夹中的电子表格中获取数据,对其进行重组并将所有内容合并到主电子表格中。不过,我在表格将看起来像日期的字符串存储为日期的方式上遇到了很多麻烦。
本质上,其中一个单元格的内容如下:“运行日期:02/06/2020”。所以我正在做一个 REGEX 操作来提取日期并将其粘贴到另一个单元格中。问题是,默认情况下,Sheets 将其解释为美国格式 (mm-dd-yyyy) 的日期,但日期应采用国际格式 (dd-mm-yyyy)。所以当我做这个粘贴操作时,数据被存储为错误的数字(43867 而不是 43984)。
这是相关的代码:
var date = sheet.getRange(2, 35).getDisplayValue();
var regex = new RegExp("[0-9]*\/[0-9]*\/*\/[0-9]*");
var cleanDate = regex.exec(date);
sheet.getRange(11, 1, lastrow-10).setValue(cleanDate);
我尝试了 setNumberFormat() 方法,但它并没有解决我的问题,因为它解释了错误的基础数字。有没有办法让我强制在每个电子表格上粘贴此日期的特定范围仅存储文字字符串?
我想到的另一个潜在解决方案是以某种方式在 REGEX 操作之后获取原始字符串并将其转换为正确的日期基础数字。例如“运行日期:02/06/2020”>“02/06/2020”>“43984”。这可能会更好,因为我以后不必处理文字字符串“02/06/2020”,但我不知道该怎么做。
谢谢。
解决方案
试试这个:
var dts=sheet.getRange(2, 35).getDisplayValue();
var t=dts.split('/');
var date=new Date(t[2],t[0]-1,t[1])
由 Maldoror 提供:
var date = sheet.getRange(2, 35).getDisplayValue();
var regex = new RegExp("[0-9]*\/[0-9]*\/*\/[0-9]*");
var cleanDate = regex.exec(date);
var t=cleanDate[0].split('/');
var dateConv=new Date(t[2],t[1]-1,t[0]);
sheet.getRange(11, 1, lastrow-10).setValue(dateConv);
推荐阅读
- c# - 如何将 UserControl 添加到 Outlook Vsto 中的消息页面
- javascript - 如何在 javascript 中进行必要的更改以使代码正常工作
- django - 如何在同一页面中对多个查询集进行分页和排序?
- ruby - 如何在没有身份验证的情况下推送 gem?
- python - 如何在加载大型库时加速 Pytest 启动(太慢)
- angular - Angular - 测试/模拟使用 rxjs fromEvent 的订阅
- c++ - 复制构造函数在复制 std::vector 时工作得更快
比 std::copy - ios - 有没有办法下载 USDZ 并将其放置在现实套件场景中?
- javascript - SonarQube - 使用 sonar-project.properties 覆盖质量配置文件
- flutter - 颤振:预期类型错误的值。传入字符串,小部件期待别的东西