我真的以为我开始理解它是如何工作的,直到我试图提炼一个测试用例这个问题,再次是完全糊涂了。
随着谷歌电子表格,你可以写这样的自定义函数:
function dateToSeconds(date) {
var hours = date.getHours();
var minutes = date.getMinutes();
var seconds = date.getSeconds();
return (hours*3600) + (minutes*60) + seconds;
}
并通过这样做如把它称为一个细胞
=dateToSeconds(A1)
并且它你所期望的。 但是,如果你把它就像这样:
function test() {
var sheet = SpreadsheetApp.getActiveSheet();
sheet.getRange("A2").setValue(dateToSeconds(sheet.getRange("A1").getValue()));
}
有2500万个21S的差异。 有没有搞错?
另外,如果你想使之被格式化为一个时间从脚本返回日期对象,你可以做如
function newTime(hours, minutes, seconds) {
// 1899-12-30 is the epoch for time values, it seems
// http://stackoverflow.com/questions/4051239/how-to-merge-date-and-time-as-a-datetime-in-google-apps-spreadsheet-script
return new Date(1899, 11, 30, hours, minutes, seconds, 0);
}
并通过这样称呼它:
=newTime(A1, A2, A3)
并能正常工作。 如果你这样做:
function test() {
var sheet = SpreadsheetApp.getActiveSheet();
var values = sheet.getRange("A1:C3").getValues();
sheet.getRange("D3").setValue(newTime(values[0], values[1], values[2]));
}
然后(按给出的11:00:00的输入)它被格式化为像一个日期:
01/01/1970 01:00:00
它看起来像它被更传统的1970年时代之后解释为一个小时? 我想我以前见过的行为是有点对称的25米-21上述偏移和我会看到:
10时34分39秒
我的测试用例是这里