Javascript 使用js或apps脚本将字符串转换为datetime,并在google工作表中添加5:30小时
我有多行带有字符串格式的datetime,我想将其转换为日期时间,然后再添加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-
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分钟。正确吗?嗨,科伦,你能给我们看看你试过的代码吗?请查看网站的“如何提问”部分。