2013-02-13 83 views
0

我正在使用腳本創建使用電子表格中鍵入的信息創建日曆事件,其中我在兩個單元格中具有開始和結束時間。然而,當我試圖讓開始/結束時間的事件,價值觀得到2'20"區別(我得到的值是Google腳本在使用時間值時丟失了精度

Sat Dec 30 1899 18:57:40 GMT-0430 (VEST) 

但單元格的值是19時00分00秒)。

  • 有沒有辦法修復這個2'20「偏移量?這是一個錯誤?我看到的差異是「VEST」時間而不是「VET」(委內瑞拉標準時間)值。
  • 在情況下,它是一個錯誤,就是它始終是相同的時間差(2'20" )?我的話,我可以修復,通過添加這些秒鐘,該日期的偏移量。提前爲

謝謝你的幫助。

回答

0

的問題是不是你認爲它是...

沒有「小時」值在JavaScript中也沒有「日期」值,約會對象總是在一天一個完整的日期,月份,年份,小時,分鐘,秒和毫秒,無論您如何選擇可視化它。

您顯示的值來自記錄器,該記錄器始終顯示完整的日期對象,並且由於您的值未定義有效日期,因此它認爲它是0,即電子表格的參考日。要檢查只在電子表格單元格中鍵入0並強制數字格式爲日期,您將獲得30/12/1899 00:00:00

這給了你一個答案的一部分,因爲它解釋了爲什麼......現在回答你的問題和提供一個答案有幾種可能的方式來解決這個問題。

最簡單的一種是你的2個細胞在一個以電子表格的水平創造中,你用一個簡單的公式第三個單元格合併:

考慮到你有A1日期和時間在B1,創建公式C1 =A1+B1

這很容易,但你可能不願意有一個額外的細胞......你可以最終使用一個隱藏的單元,(簡單)添加並讓你的腳本讀取該單元而不是其他2個單元。 ..

另一種可能性我爲了在劇本中增加這些內容,這裏有一個腳本,其中一步一步的過程要儘可能清晰。

function myFunction() { 
    var sh = SpreadsheetApp.getActive(); 
    var day = new Date(sh.getRange('A1').getValue()); 
    var time = new Date(sh.getRange('B1').getValue()); 
    var hour = time.getHours(); 
    var min = time.getMinutes(); 
Logger.log(day+' + '+time+' '+hour+':'+min+' = '+ new Date(day.setHours(hour,min,0,0))); 
} 

結果在記錄器:(比利時時間)

[13-06-21 17:16:19:071 CEST] Fri Dec 27 2013 00:00:00 GMT+0100 (CET) + Sat Dec 30 1899 20:30:00 GMT+0100 (CET) 20:30 = Fri Dec 27 2013 20:30:00 GMT+0100 (CET)