2014-04-04 331 views
1

我有個約會存儲如下:Utilities.formatDate未設定日期正確

existingDate = Wed Apr 30 2014 00:00:00 GMT+0100 (BST) 

當我使用Utilities.formatDate格式化日期之前改爲一天的日期。

var formattedDate = Utilities.formatDate(new Date(existingDate), "GMT", "dd/MM/yyyy"); 

格式化的日期,然後設置爲29/04/201430/04/2014

有沒有其他人看到過這種行爲。

回答

2

Utilities.formatDate似乎工作正常。

你4月30日午夜在GMT-1但你告訴它在不同的時區GMT,或者更明確地GMT-0格式化這個日期。預期的結果確實是4月29日23時。

Utilities.formatDate中的第二個參數必須是您期望的時區。

+0

非常好,謝謝! – user3497630

1

這個谷歌腳本還有一些其他問題。 如果我想要時區AEST,但只有2017年1月27日的形式,那麼Utilities.formatDate(「1/27/2017」,「AEST」,「yyyy-MM-dd」)將返回一個2017-01-26的價值,它應該是前一天!但是,如果我有一段時間,比如「2017年1月27日12:00:00」,那麼它會返回正確的一天。但是,如果我使用「GMT + 11」作爲時區,即使沒有時間,如果返回正確的日期。

實施例 -

Logger.log('Example 1='+Utilities.formatDate(new Date("1/27/2017"),"AEST","yyyy-MM-dd")); Logger.log('Example 2='+Utilities.formatDate(new Date("1/27/2017 12:00:00"),"AEST","yyyy-MM-dd")); Logger.log('Example 3='+Utilities.formatDate(new Date("1/27/2017"),"GMT+11","yyyy-MM-dd"));

輸出 -

實施例1 = 2017年1月26日

實施例2 = 2017年1月27日

實施例3 = 2017- 01-27

從日期讀取日期時的解決方法在沒有時間一個電子表格單元格是添加時間和使用時區像「AEST」或類似的,這樣的事情時 -

var displayDate = sheet.getRange(a1Notation).getDisplayValue(); // Not .getValue(); 
Logger.log(Utilities.formatDate(new Date(displayDate + " 12:00:00"), "AEST", "yyyy-MM-dd")); 

但是因爲你不「GMT + 11」會更容易不需要添加時間。

+0

即使我在所有相關文件中設置了所有正確的時區,但是三重檢查時,我仍然得到錯誤的日期,因此在將表格中的日期複製到文檔時,結果仍然錯誤。使我抓狂。時間(持續時間)是完全錯誤的,例如30或40分鐘。堅果。 – Ralf