我在一个单元格中有一个公式,该公式通过合并电子表格中两个单元格的值对另一个工作表进行vlookup。这是一个名称表,在左边,在日期的顶部。我将名称和日期值组合为单个字符串值,并将其作为vlookup键值使用,效果很好。现在,我基本上需要在Google脚本中执行相同的操作,但是日期值让我无所适从。在vlookup单元格公式中,日期值是5位数字的日期序列号。但是,当我在脚本中合并两个单元格值时,无法从单元格中获得相同的5位串行代码。我尝试了数字,字符串,文本等的所有转换。我可以使用什么函数在脚本中将5位日期值作为字符串获取?
function serialDatevalue(){
var WB = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var NewDate = new Date();
var NewDate = WB.getRange('B1').getValue();
var JSdate = WB.getRange('B1').getValue();
Browser.msgBox(Number(NewDate));
// Some others that I have tried
// var JSdate = Date.parse(DateValue);
// var JSdate = Number(DateValue);
// var JSdate = Utilities.formatDate(DateValue, 'PST', '%');
}
例如,2019年4月13日=43568。我想将此5位数字值作为字符串。
我不断收到'Sat Apr 13 2019 00:00:00 GMT-0700(PDT)'或其他更长的整数值。
请帮助。
答案 0 :(得分:1)
从Tainake's answer到Getting the number equalent of duration using GAS
var serialNumber = (dateObject.getTime() / 1000 / 86400) + 25569; // Reference: https://stackoverflow.com/a/6154953
来自https://developers.google.com/sheets/api/guides/concepts#datetime_serial_numbers
日期/时间序列号
Google表格与大多数其他电子表格一样 应用程序,将日期/时间值视为十进制值。这让你 在公式中对它们执行算术运算,因此您可以增加天数或 周,加上或减去两个日期/时间,然后执行其他类似的操作 操作。
Google表格使用epoch date形式,通常用于 电子表格。值的整数部分( 十进制)表示自1899年12月30日以来的天数。 小数部分(小数点右边)将时间计算为一的分数 天。例如,1900年1月1日中午将是2.5,2是因为 这是1899年12月30日之后的两天,而.5是因为中午是 天。 1900年2月1日下午3点将是33.625。
请注意,Google表格正确地将1900年视为普通年份 年,而不是a年。
另一方面,JavaScript使用1970年1月1日00:00 UTC作为时代日期,并以毫秒为单位。
请注意:用于将序列号从一个转换为另一个的自定义代码应考虑电子表格和Google Apps脚本是否使用相同的时区。
相关