首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Google Apps脚本中将字符串数组转换为日期数组

在Google Apps脚本中将字符串数组转换为日期数组
EN

Stack Overflow用户
提问于 2014-07-26 15:31:46
回答 1查看 1.9K关注 0票数 0

我有一个谷歌表格电子表格。在B列中,我有一个字符串列表,这些字符串可以是日期,也可以是日期范围,格式为月/日。例如:

代码语言:javascript
运行
复制
7/26
7/27-7/31
8/1
8/2
8/3-8/5

我想创建一个数组,第一个日期在左边,第二个日期(如果有的话)在右边。如果没有第二个日期,则可以保留为空。这就是我想要的:

代码语言:javascript
运行
复制
[7/26,]
[7/27,7/31]
[8/1,]
[8/2,]
[8/3,8/5]

我试过了:

代码语言:javascript
运行
复制
var r = 'B'
var dateString = sheet.getRange(dateColumns[r] + '1:' + dateColumns[r] + lastRow.toString()).getValues();
var dateArr = Utilities.parseCsv(dateString, '-');

但这只是将所有值连接在一起。另外,如果可以将输出放在日期格式中,那就更好了。

EN

回答 1

Stack Overflow用户

发布于 2014-07-26 17:09:56

这是一个有趣的练习...

下面是一段代码,它可以做你想要的事情:

代码语言:javascript
运行
复制
function test(){
  convertToDateArray('7/26,7/27-7/31,8/1,8/2,8/3-8/5');
}

function convertToDateArray(inputString){
  if(typeof(inputString)=='string'){inputString=inputString.split(',')}; // if input is a string then split it into an array using comma as separator
  var data = [];
  var datesArray = [];
  for(var n in inputString){
    if(inputString[n].indexOf('-')==-1){inputString[n]+='-'};// if only 1 field add an empty one
    data.push(inputString[n].split('-'));// make it an array
  }
  Logger.log(data);//check
  for(var n in data){
    var temp = [];
    for(var c in data[n]){
      Logger.log('data[n][c] = '+ data[n][c]);
      var date = data[n][c]!=''? new Date(2014,Number(data[n][c].split('/')[0])-1,Number(data[n][c].split('/')[1]),0,0,0,0) : '';// create date objects with right values
      Logger.log('date = '+date);//check
      temp.push(date);
    }
    datesArray.push(temp);//store output data in an array of arrays, ready to setValues in a SS
  }
  Logger.log(datesArray);
  var sh = SpreadsheetApp.getActive().getActiveSheet();
  sh.getRange(1,1,datesArray.length,datesArray[0].length).setValues(datesArray);
}

datesArray的记录器结果:

代码语言:javascript
运行
复制
[[Sat Jul 26 00:00:00 GMT+02:00 2014, ], [Sun Jul 27 00:00:00 GMT+02:00 2014, Thu Jul 31 00:00:00 GMT+02:00 2014], [Fri Aug 01 00:00:00 GMT+02:00 2014, ], [Sat Aug 02 00:00:00 GMT+02:00 2014, ], [Sun Aug 03 00:00:00 GMT+02:00 2014, Tue Aug 05 00:00:00 GMT+02:00 2014]]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24968683

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档