首页 > 解决方案 > 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”,但我不知道该怎么做。

谢谢。

标签: google-apps-scriptgoogle-sheetsdate-format

解决方案


试试这个:

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

推荐阅读