问题不在于您似乎认为的地方...
javascript 中没有“小时”值,也没有“日期”值,无论您选择如何将其可视化,日期对象始终是日、月、年、小时、分钟、秒和毫秒的完整日期。
您显示的值来自始终显示完整日期对象的记录器,并且由于您的值未定义有效日期,因此它认为它是 0,即电子表格的参考日。要检查是否只需在电子表格单元格中键入 0 并将数字格式强制为日期,您将得到30/12/1899 00:00:00
这为您提供了部分答案,因为它解释了原因……现在回答您的问题并提供答案,有几种可能的方法可以解决这个问题。
最简单的方法是在电子表格级别将 2 个单元格合并为一个,方法是创建一个使用简单公式的第 3 个单元格:
考虑到您有日期A1
和时间B1
,请使用公式创建 C1=A1+B1
这很容易,但您可能不愿意拥有一个额外的单元格......您最终可以使用一个隐藏单元格来执行(简单)添加,并让您的脚本读取该单元格而不是其他 2 个单元格......
另一种可能性是在脚本本身中进行此添加,这里有一个脚本,它有一个逐步的过程,尽可能清晰。
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)