【问题标题】:date getValue() is one day off from getDisplayValue()日期 getValue() 从 getDisplayValue() 休息一天
【发布时间】:2019-11-29 17:10:52
【问题描述】:

我有一个日期格式设置为“2019 年 11 月 2 日星期六”的单元格。

但是当我用脚本查找单元格日期时,它是一天 (-1)。

var date = new Date();
date = sheet_log.getRange(110, 1).getValue();
var dateDisplay = sheet_log.getRange(110, 1).getDisplayValue();
// date = Fri Nov 01 2019 18:00:00 GMT-0600 (CST)
// dateDisplay = Sat, Nov 2, 2019

为什么 Google 表格允许我使用日历选择器设置日期,但在脚本中计算日期减去一天?

有没有办法解决这个问题?

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    这个答案怎么样?请认为这只是几个可能的答案之一。

    虽然我不确定您的实际情况,例如电子表格的时区值和脚本的时区值不同,但这种情况可能会发生。

    • getValue() 检索到的值遵循脚本的时区。
    • getDisplayValue() 检索到的值遵循电子表格的时区。

    两个时区可以通过以下脚本来确认。

    var timezone1 = SpreadsheetApp.getActiveSpreadsheet().getSpreadsheetTimeZone();
    var timezone2 = Session.getScriptTimeZone();
    Logger.log(timezone1)
    Logger.log(timezone2)
    
    • 如果timezone1timezone2不同,则认为问题的原因是由于时区不同。在这种情况下,请设置电子表格或脚本的时区。
    • 如果timezone1timezone2相同,则认为问题原因不是时区问题。因此,需要进一步调查以明确问题原因。

    参考资料:

    如果我误解了您的情况,我深表歉意。

    【讨论】:

    • 您的建议有所帮助。事实证明,我的电子表格有一个相似但不同的时区(timezone1 = America/Chicago,timezone2 = America/Mexico_City)。 Google 脚本编辑器首选项有自己不同的时区设置。
    • @Adam Glazier 感谢您的回复。我可以知道我的猜测对你的情况是正确的。如果您希望电子表格和脚本之间的结果相同,请使用相同的时区。但如果我的回答没有解决你的问题,我必须道歉。
    猜你喜欢
    • 2019-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-11
    相关资源
    最近更新 更多