代码之家  ›  专栏  ›  技术社区  ›  Nabs335

将日期转换为数字格式的谷歌应用程序脚本

  •  0
  • Nabs335  · 技术社区  · 3 年前

    我想将像这样的日期dd/mm/yyyy转换为数字格式,但在谷歌应用程序脚本中找不到任何方法 例如,我的“L2”单元格中有一个日期,所以我得到如下值:

    date = active_sheet.getRange("L2").getValue()
    

    如何将日期变量转换为数字格式(整数)?例如,今天数字格式的日期大约是44000

    提前谢谢

    1 回复  |  直到 3 年前
        1
  •  5
  •   Jeff Schaller Zayan    3 年前

    我相信你想用Google Apps脚本将日期对象或日期字符串转换为序列号。

    来自“ 我想这是约会对象,但我不确定 “,我认为可以考虑两种模式。

    模式1:

    在这个模式中,它假设 date = active_sheet.getRange("L2").getValue() 是日期对象。示例脚本如下所示。

    var active_sheet = SpreadsheetApp.getActiveSheet();
    var date = active_sheet.getRange("L2").getValue();
    var serialNumber = (new Date(date.getTime() - (1000 * 60 * date.getTimezoneOffset())).getTime() / 1000 / 86400) + 25569; // Reference: https://stackoverflow.com/a/6154953
    console.log(serialNumber);
    

    模式2:

    在这个模式中,它假设 日期=有效工作表。getRange(“L2”)。getValue() 字符串值是这样的吗 dd/mm/yyyy .示例脚本如下所示。

    var active_sheet = SpreadsheetApp.getActiveSheet();
    var date = active_sheet.getRange("L2").getValue(); // or getDisplayValue()
    var [d, m, y] = date.split("/");
    var dateObj = new Date(y, m - 1, d);
    var serialNumber = (new Date(dateObj.getTime() - (1000 * 60 * dateObj.getTimezoneOffset())).getTime() / 1000 / 86400) + 25569; // Reference: https://stackoverflow.com/a/6154953
    console.log(serialNumber);
    

    测试:

    对于上述两个脚本,当 21/04/2022 已使用, 44672 被退回。