如何将 Google Sheet 日期数值转换为 JavaScript 日期?

3 javascript google-sheets google-apps-script

对于日期,Google Sheets 以大致纯数字格式提供一些数值,例如 450345。如何在 JavaScript 中将此数字转换为日期值?尝试根据其中之一创建新日期,但得到的值与 Google 表格显示日期值不对应。

小智 6

感谢 TheWizEd 引导我找到了正确的答案。这是一个简单的转换脚本:

function logSheetDateString(GS_date_num, timezone, format) {
    var GS_earliest_date = new Date(1899, 11, 30), 
        //GS_earliest_date gives negative time since it is before 1/1/1970
        GS_date_in_ms = GS_date_num*24*60*60*1000;
    Logger.log(Utilities.formatDate(new Date(GS_date_in_ms + GS_earliest_date.getTime()), 
                                    timezone, format));
}
Run Code Online (Sandbox Code Playgroud)

自 1970 年 1 月 1 日起转换为毫秒可简化为:

JS_date_in_ms = GS_date_num * 86400000 - 2209132800000;
Run Code Online (Sandbox Code Playgroud)