在另一個程式中,我計算了一個事件的持續時間。結果以秒為單位。在外部程式(使用 LuaScript)中,我將此秒結果轉換為“hh:mm:ss.SSS”格式的字串。然后我通過 Google Apps 腳本將此發布到 Google 表格,并且我想將其寫入下一個可用行 ( ss.appendRow)。它大多正確顯示,除了它被四舍五入到最接近的整秒,而不是保持毫秒。
Google 表格將此字串正確識別為日期/時間,但認為它是實際時間而不是持續時間。例如,如果事件持續了 5.75 秒,則單元格中的輸出顯示“00:00:05”,當我選擇單元格時,它實際上顯示“12:00:05 AM”。
按照我在此站點上找到的建議,我嘗試了以下代碼:
function doPost(e) {
var s = SpreadsheetApp.openById(myID);
var ss = s.getSheetByName("TimeResults");
var params = JSON.parse(e.postData.contents);
ss.appendRow([Utilities.formatDate(new Date(params.draftDuration), s.getSpreadsheetTimeZone(), 'hh:mm:ss.SSS'));
return ContentService.createTextOutput('{"status":"ok"}').setMimeType(ContentService.MimeType.JSON);
}
但這導致了意外的輸出,顯示“5:00:00 AM”。顯然,我錯誤地使用了 Date 物件。我應該怎么做才能使這項作業按預期進行,以顯示持續時間,例如“00:00:05.75”?
以下是包含在中的 JSON 片段e.postData.contents:
"gameDate": 05/07/2022
"draftDuration": 0:0:3.75
"gameDuration": 0:0:5.323
uj5u.com熱心網友回復:
如果原始值以秒為單位,如5.3235 秒和 323 毫秒,則可以通過將其除以如下方式將其轉換為日期序列值:
dataserial = seconds / 24 / 60 / 60
將結果值附加到電子表格中,并將單元格或整列格式化為持續時間,說明[h]:mm:ss.SSS在哪里[h]表示經過的小時數。
小時欄位需要表示為經過的小時數才能正確處理超過 24 小時的持續時間。分和秒永遠不會超過 60,無論它們表示日歷時間還是經過時間,都可以以相同的方式處理。
有關日期和時間值如何在電子表格中作業的說明,請參閱此答案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/472608.html
