Javascript 使用js或apps脚本将字符串转换为datetime,并在google工作表中添加5:30小时

Javascript 使用js或apps脚本将字符串转换为datetime,并在google工作表中添加5:30小时,javascript,datetime,google-apps-script,google-sheets,Javascript,Datetime,Google Apps Script,Google Sheets,我有多行带有字符串格式的datetime,我想将其转换为日期时间,然后再添加5.30小时 如何做到这一点 2020-06-05T7:30:00Z 2020-08-25T18:30:00Z 2020-08-28T18:30:00Z 2020-07-01T7:30:00Z 2020-06-10T6:30:00Z 预期产出: 2020-06-05 13:00:00 2020-08-25 00:00:00 2020-08-28 00:00:00 2020-07-01 13:00:00 2020-06-

我有多行带有字符串格式的datetime,我想将其转换为日期时间,然后再添加5.30小时

如何做到这一点

2020-06-05T7:30:00Z
2020-08-25T18:30:00Z
2020-08-28T18:30:00Z
2020-07-01T7:30:00Z
2020-06-10T6:30:00Z
预期产出:

2020-06-05 13:00:00
2020-08-25 00:00:00
2020-08-28 00:00:00
2020-07-01 13:00:00
2020-06-10 12:00:00
根据对类似问题的回答,您可以执行以下操作:

=DATEVALUE(MID(A1,1,10))+TIMEVALUE(MID(A1,12,8))+TIME(5,30,0)

这应添加日期、时间和请求的5:30。但是,它没有按照提供的方式处理输入。第一个、第四个和第五个条目打破了公式。如果可以更改输入,使“小时”字段始终有两位数字,则此公式有效。下面是一个示例表:

编辑:问题不是2位数的小时,而是末尾的Z表示Zulu(即UTC)时间。因此,我们可以去掉这个字符,但根据,它不支持时区。

根据一个类似的问题,您可以做如下操作:

=DATEVALUE(MID(A1,1,10))+TIMEVALUE(MID(A1,12,8))+TIME(5,30,0)

这应添加日期、时间和请求的5:30。但是,它没有按照提供的方式处理输入。第一个、第四个和第五个条目打破了公式。如果可以更改输入,使“小时”字段始终有两位数字,则此公式有效。下面是一个示例表:

编辑:问题不是2位数的小时,而是末尾的Z表示Zulu(即UTC)时间。所以,我们可以去掉这个字符,但根据,它不支持时区。

试试这个:

function add(dts,hr,min) {
  var dts=dts||"2020-06-05T7:30:00Z";//date time string
  dts=dts.slice(0,-1);//remove Z
  var hr=hr||5;
  var min=min||30;
  var add=hr*3600000+min*60000;//add 7 hours and 30 minutes
  if(dts) {
    let t0=dts.split('T');
    let t1=t0[0].split('-');
    let t2=t0[1].split(':');
    var stv=new Date(t1[0],Number(t1[1])-1,t1[2],t2[0],t2[1],t2[2]).valueOf();//month-1
    var dt=new Date(stv+add);
    var dso=Utilities.formatDate(dt,Session.getScriptTimeZone(), "yyyy-MM-dd H:mm:ss");
    console.log(dso)
    return dt;
  }
}
试试这个:

function add(dts,hr,min) {
  var dts=dts||"2020-06-05T7:30:00Z";//date time string
  dts=dts.slice(0,-1);//remove Z
  var hr=hr||5;
  var min=min||30;
  var add=hr*3600000+min*60000;//add 7 hours and 30 minutes
  if(dts) {
    let t0=dts.split('T');
    let t1=t0[0].split('-');
    let t2=t0[1].split(':');
    var stv=new Date(t1[0],Number(t1[1])-1,t1[2],t2[0],t2[1],t2[2]).valueOf();//month-1
    var dt=new Date(stv+add);
    var dso=Utilities.formatDate(dt,Session.getScriptTimeZone(), "yyyy-MM-dd H:mm:ss");
    console.log(dso)
    return dt;
  }
}

看起来你不是说5.3小时,你是说5小时30分钟。正确吗?嗨,科伦,你能给我们看看你试过的代码吗?请查看网站的“如何提问”部分。看起来你的意思不是5.3小时,而是5小时30分钟。正确吗?嗨,科伦,你能给我们看看你试过的代码吗?请查看网站的“如何提问”部分。