我已经设置了一个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");
答案 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小时。