![](/img/trans.png)
[英]How can I convert this a unix timestamp in Javascript into this date format?
[英]How can I turn a UNIX timestamp into a Google Sheets date value?
我正在使用Google Apps腳本通過API檢索一些數據。 給我的日期是標准的ISO 8601字符串,我需要將其轉換為顯示時Google表格可以理解的日期數字(即Google表格/ Excel標准日期值)
當前,我正在使用一種變通方法,該方法是在單元格中傳遞字符串,然后通過DATEVALUE()
函數將其轉換,但這並不是最佳選擇,因為我無法在腳本中本地使用該函數(來自本主題的研究)。
我想直接在Google Apps腳本中創建一個函數,該函數將Javascript的Date()
對象轉換為電子表格的可讀值。
我通過將自1970年以來的秒數轉換為自1900年以來的天數進行了一些嘗試,但是我總是有兩個小時的時間間隔,無法解釋。 我懷疑這與我使用UTC + 2的事實有關,但並不能真正解決問題,而添加兩個小時聽起來似乎是一個不好的解決方案。
到目前為止,我所獲得的基線是:
function toDateNum(string) {
//Parsing to Unix Timestamp
date = new Date(string).getTime() / 1000
//Here I need convert to GSheets date value, add the number of days between 1900-01-01 and 1970-01-01
return date ;
}
我正在尋找對此的算術求解(轉換和添加日期),或者正在Google表格應用程序中集成的函數可以讓我使用此函數。 有什么建議么 ?
非常感謝 !
編輯(附加說明)
我的問題之一是Google表格不直接支持返回的toISOString
格式。 它將僅作為字符串讀取,而不作為日期值讀取。 目前,我正在通過在單元格中發送toISOString
值並直接在表中使用DateValue()重新格式化來解決此問題。 我正在嘗試在腳本中本地執行此操作。
據我所知,Google表格(和Excel)支持的日期值為自1900-01-01以來的天數。 應該找到一個簡單的算術解決方案(計算從幾秒鍾到幾天的unix時間戳,然后加上1900-01-01與1970-01-01之間的差),但是再一次,我又得到了兩個小時的時間間隔。
在下面鏈接的問題中,user79865的響應說明了如何在工作表中管理日期及其格式。 Sheets API文檔還指定了您可以使用的所有不同格式,以及在處理日期和時間時如何創建自己的格式。 Utilities.formatDate()將幫助您將日期格式更改為所需的格式。
問題網址: https : //webapps.stackexchange.com/questions/88621/basic-date-manipulation-in-google-script?newreg = 7c66fdcf156f4ff5a30eb5fa4153b243
表格文檔網址: https : //developers.google.com/sheets/api/guides/formats
您可以通過使用new Date(string*1000)
並將結果傳遞到Utilities.formatDate()
。 將Unix時間戳乘以1000表示您的參數以毫秒為單位,而不是秒。 這個Stackoverflow問題有很多關於使用js格式化日期的好信息。
function toDateNum(string) {
//convert unix timestamp to milliseconds rather than seconds
var d = new Date(string*1000);
//get timezone of spreadsheet
var tz = SpreadsheetApp.getActiveSpreadsheet().getSpreadsheetTimeZone();
//format date to readable format
var date = Utilities.formatDate(d, tz, 'dd-MM-yyyy hh:mm:ss a');
return date;
}
該腳本將使用電子表格的時區設置,但是您可以將其更改為使用腳本的時區,也可以自己輸入一個,如果您想改用以下示例,請參見以下示例:
//use spreadsheet timezone setting
var tz = SpreadsheetApp.getActiveSpreadsheet().getSpreadsheetTimeZone();
//use script timezone setting
var tz = Session.getScriptTimeZone();
//enter your own time zone
var tz = 'GMT+0';
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.