如何从单元格中获取5位数字序列日期格式的字符串值到脚本中?

时间:2019-04-29 03:51:49

标签: string datetime serialization google-apps-script google-sheets

我在一个单元格中有一个公式,该公式通过合并电子表格中两个单元格的值对另一个工作表进行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)'或其他更长的整数值。

请帮助。

1 个答案:

答案 0 :(得分:1)

Tainake's answerGetting the number equalent of duration using GAS

var serialNumber = (dateObject.getTime() / 1000 / 86400) + 25569; // Reference: https://stackoverflow.com/a/6154953


在Google表格中获取与某个单元格日期值相对应的序列号的更简单方法是使用内置的Google表格功能TO_PURE_NUMBER。这是因为Google Apps脚本使用的Google表格和JavaScript使用了不同的纪元(序列号的引用日期为0)并且使用了不同的时间单位。

来自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脚本是否使用相同的时区。

相关