作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一张每天添加数千个值的工作表。为了保持小而灵活,它定期将数据行作为逗号分隔值存储在单独的工作表上。我在所有单元格上使用 toString() 遍历每一行。
当检索所需数据并将其重新打印到新工作表时,工作表不会将字符串识别为日期。例如2019 年 3 月 29 日星期五 13:45:06 GMT-0700(PDT)
我的解决方法是在检索字符串时对其进行切片,我只是想知道为什么他们不将标准日期字符串识别为日期。
function compressData() {
var sheet = SpreadsheetApp.getActiveSheet();
var arr = sheet.getRange(1,1,2,2).getValues();
var arrNew = [];
var arrRow =[];
var arrExpanded;
for (var i in arr) {
for (var x in arr[i]) {
arrRow.push(arr[x][i]);
}
arrNew.push([arrRow[i].toString()]);
}
// stores each row of the original array as a
// comma separated string in a new array
sheet.getRange(1, 3, arrNew.length, arrNew[0].length).setValues(arrNew);
// writes the new array to a new range
}
function expandData(){
// prints the arrays onto a new range and the new date
// cell isn't recognized as a date
var arrExpanded = [];
var sheet = SpreadsheetApp.getActiveSheet();
var arrCompressed = sheet.getRange(1,3,2,1).getValues();
for (var i in arrCompressed) {
var arrTemp = arrCompressed.toString().split(',');
arrExpanded.push(arrTemp);
}
// rebuilds the 2d array
sheet.getRange(1, 4, arrExpanded.length, arrExpanded[0].length).setValues(arrExpanded);
}
最佳答案
您从字符串中提取日期值,并且想知道为什么 Google 表格无法将标准日期字符串识别为日期。
原因是您在屏幕上看到的日期实际上是一个数字,milliseconds from the Unix epoch .它只是被格式化显示,因此它“看起来像”一个由文本组成的日期。
要将日期字符串转换为 Google 表格将识别为日期的值,您需要对其进行转换。下面的代码提供了一个简单的例子:
在下面的屏幕截图中,Cell B1 中的值是一个字符串;该值是单元格 C1 是日期值。注意单元格 C5 中显示的实际数据值(数字)(此单元格的格式为“数字”);
function so5842277201() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheetname = "Sheet1";
var sheet = ss.getSheetByName(sheetname);
var datestring = sheet.getRange("A1").getValue();
Logger.log(datestring);
var date01 = new Date(datestring);
Logger.log(date01);
var date02 = Utilities.formatDate(date01,"GMT-7", "EEE MMM d yyyy HH:mm:ss");
var newdaterange = sheet.getRange("C1");
newdaterange.setValue(date02);
}
截图
关于javascript - Google 工作表日期由 toString() 存储为字符串,在写回单元格时不会被识别为日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58422772/
我是一名优秀的程序员,十分优秀!