var valueDate = Utilities.formatDate(sheet.getRange("D2").getValue(), SpreadsheetApp.getActive().getSpreadsheetTimeZone(), "dd/MM/YYYY hh:mm:ss");
var valueResetCD = Utilities.formatDate(sheet.getRange("C2").getValue(), SpreadsheetApp.getActive().getSpreadsheetTimeZone(), "hh:mm:ss");
这是我目前拥有的2行-由于Spreadsheet时区可能与makro时区不同,因此我被告知始终从工作表中获取时区。
在这2个值中,我保留了正确的值(试图将它们打印到字段中)
第一个是19/09/2020 22:34:52
(特定日期),第二个是03:00:00.000
(3小时)
现在,我要做的就是将这2次加在一起,这样我就可以得到输出: 20/09/2020 01:34:52
我尝试过:sheet.getRange("Data!$A$21").setValue(valueDate + valueResetCD)
但是我想这并不是那么容易-它只是将时间的2个字符串值复制到一行中。
如何将这两个“时间/日期”值彼此相加,从而得到上面的输出
我相信您的情况和目标如下。
valueDate
被19/09/2020 22:34:52
从检索sheet.getRange("D2").getValue()
。valueResetCD
被03:00:00.000
从检索sheet.getRange("C2").getValue()
。valueResetCD
到valueDate
。
20/09/2020 01:34:52
作为结果值。valueDate
是正确的日期时间,就像19/09/2020 22:34:52
日期对象一样。valueResetCD
是1899/12/30 03:00:00
。因为电子表格使用序列号。
当以上几点反映到Google Apps脚本中时,它如下所示。
function myFunction() {
var sheetName = "Sheet1"; // Please set the sheet name.
// 1. Retrieve values from the cells as the date object.
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
var valueDate = sheet.getRange("D2").getValue(); // As a sample value, it's `19/09/2020 22:34:52`.
var valueResetCD = sheet.getRange("C2").getValue(); // As a sample value, it's `03:00:00.000`.
// 2. Convert the date object to the unix time.
var valueDateUnix = valueDate.getTime();
var differenceBetweenSerialAndUnix = new Date("1970/01/01 00:00:00").getTime() - new Date("1899/12/30 00:00:00").getTime();
var timeDifference = (new Date().getTimezoneOffset()) * 60 * 1000;
var valueResetCDUnix = valueResetCD.getTime() + differenceBetweenSerialAndUnix - timeDifference;
// 3. Add both time and convert it to the date object.
var resultDateObject = new Date(valueDateUnix + valueResetCDUnix);
var resultString = Utilities.formatDate(resultDateObject, SpreadsheetApp.getActive().getSpreadsheetTimeZone(), "dd/MM/YYYY hh:mm:ss");
console.log(resultDateObject)
console.log(resultString) // You can see "20/09/2020 01:34:52" at the log.
// 4. Put the value to the cell.
sheet.getRange("A1").setValue(resultDateObject);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句