我正在使用一个脚本,该脚本使用在电子表格上输入的信息创建日历事件,其中我在两个单元格中有一个开始和结束时间。但是,当我尝试获取事件的开始/结束时间时,值会得到 2'20“差异(我得到的值是
Sat Dec 30 1899 18:57:40 GMT-0430 (VEST)
但单元格值 19:00:00 )。
提前感谢您的帮助。
答案 0 :(得分:0)
这个问题不在你认为的地方......
javascript中没有'hours'值,也没有'date'值,日期对象始终是日,月,年,小时,分钟,秒和毫秒的完整日期,无论您选择如何将其可视化。
您显示的值来自记录器,该记录器始终显示完整的日期对象,并且由于您的值未定义有效日期,因此它认为它为0,即电子表格的参考日期。要检查是否只是在电子表格单元格中键入0并强制将数字格式设为日期,您将获得30/12/1899 00:00:00
这给你一个答案的一部分,因为它解释了为什么......现在回答你的问题并提供答案,有一些可能的方法来解决这个问题。
最简单的方法是在电子表格级别将2个单元格组合在一起,方法是创建一个使用简单公式的第3个单元格:
考虑到A1
中的日期和B1
中的小时,请使用公式=A1+B1
创建C1
这很简单,但你可能不愿意拥有一个额外的单元格...你最终可以使用一个隐藏的单元格来执行(简单)添加并让你的脚本读取该单元格而不是另外两个单元格......
另一种可能性是在脚本本身中进行添加,这是一个逐步过程的脚本,尽可能清晰。
function myFunction() {
var sh = SpreadsheetApp.getActive();
var day = new Date(sh.getRange('A1').getValue());
var time = new Date(sh.getRange('B1').getValue());
var hour = time.getHours();
var min = time.getMinutes();
Logger.log(day+' + '+time+' '+hour+':'+min+' = '+ new Date(day.setHours(hour,min,0,0)));
}
导致记录器:(比利时时间)
[13-06-21 17:16:19:071 CEST] Fri Dec 27 2013 00:00:00 GMT+0100 (CET) + Sat Dec 30 1899 20:30:00 GMT+0100 (CET) 20:30 = Fri Dec 27 2013 20:30:00 GMT+0100 (CET)