显示明天日期而不是今天的新日期

时间:2019-08-17 03:43:35

标签: datetime google-apps-script google-sheets timezone google-sheets-api

我已经设置了一个Google Web应用程序,该应用程序将数据输入到Google电子表格中并使用新的日期功能为其添加时间戳。我遇到的问题是在午夜和凌晨1点之间,日期被推迟到第二天。例如,如果我在12/03/2019 00:45 am输入数据,则Google电子表格中显示的日期为13/03/2019 00:45 am。我使用var timestamp显示日期和时间,使用var date仅显示日期。奇怪的是,即使var date都在同一时间使用,但var date却获得了时间戳记所没有的正确日期。我似乎只在午夜至凌晨1点之间遇到这个问题。非常感谢任何人都可以提供的帮助。

var timestamp = Utilities.formatDate(new Date(), "GMT+10", "dd/MM/yyyy kk:mm:ss");

var date = Utilities.formatDate(new Date(), "GMT+10", "dd-MM-yy");
------------------------------------------------------------------------------


                var rowValues = [
                    [state, owner, type, fleet, rego, date, date, site, User, timestamp, comment]
                ]
                var lar = sheet.getLastRow() + 1
                var lar1 = archive.getLastRow() + 1
                var lar2 = STate.getLastRow() + 1
                var request = {
                    'valueInputOption': 'USER_ENTERED',
                    'data': [{
                            'range': 'National Master!A' + lar + ':K' + lar + '',
                            'majorDimension': 'ROWS',
                            'values': rowValues
                        },
                        {
                            'range': 'Archive!A' + lar1 + ':K' + lar1 + '',
                            'majorDimension': 'ROWS',
                            'values': rowValues
                        },
                        {
                            'range': '' + state + '!A' + lar2 + ':K' + lar2 + '',
                            'majorDimension': 'ROWS',
                            'values': rowValues
                        }
                    ]
                };
                var response = Sheets.Spreadsheets.Values.batchUpdate(request, "sheet id here");

1 个答案:

答案 0 :(得分:3)

尝试将表示小时的字母从k更改为H

var timestamp = Utilities.formatDate(new Date(), "GMT+10", "dd/MM/yyyy kk:mm:ss");

如果您查看ref docs here,将会看到

  • k被定义为“一天中的小时(1-24)”
  • H被定义为“一天中的小时(0-23)”

我使用以下脚本对此进行了测试:

function dateCheck() {
  var d = new Date( 2019, 7, 17, 0, 45, 0 );
  var timestampK = Utilities.formatDate(d, Session.getScriptTimeZone(), "dd/MM/yyyy kk:mm:ss");
  var timestampH = Utilities.formatDate(d, Session.getScriptTimeZone(), "dd/MM/yyyy HH:mm:ss");
  Logger.log(timestampK);
  Logger.log(timestampH);
}

我得到以下输出:

  

17/08/2019 24 :45:00

     

17/08/2019 00 :45:00

k

0将日期增加了24小时。