2012-11-17 29 views
0

我有一張電子表格,我們用它來記錄我們的工作。我已經將表格中的日期列讀入數組,以便我可以對它們執行操作/計算。這對我不起作用,因爲我在調試器中注意到包含日期的數組的值具有不同的日期值格式。例如,一些顯示爲「16/11/2012」,一些顯示爲(new Date(1355184000000))。日期格式之間的轉換

有人可以指出一種方式將它們全部轉換爲統一格式,以便我可以使用它們嗎?

謝謝

+0

對不起,我將我以前的評論在回答中能夠對其進行格式化更容易。然後刪除它。 –

回答

1

你想如何顯示日期?你想讓它們成爲'日期對象'還是字符串?您在代碼中顯示的值(新的日期(13551.84億))對應於Mon Dec 10 16:00:00 PST 2012 您可以檢查通過使用Logger.log(new Date(1355184000000))

相反"16/11/2012"很可能不是一個日期,但一個字符串... (注:奇怪您使用的是「日/月/年」序列,因爲我在您的個人資料中看到您在英國,因此我認爲您會使用mm/dd/yyyy)

既然你說你需要對這些項目進行一些計算,我猜他們都應該轉換爲日期對象以便在腳本中使用它們。 我建議你看some documentation on date object看看究竟應該如何做,而不會產生錯誤。不要忘了javascript中的日期始終爲日期和時間,單位爲hh:mm:ss和毫秒。您看到的整數值是自1970年1月以來的第一個毫秒數;-)
您也可以執行search on dates in this forum並找到相當多的間隔信息​​。

這裏是一個小功能來說明:

function playWithTime(){ 
Logger.log('ref date = '+new Date(0)) 
var example = "june 30, 2013 23:59:00" 
Logger.log(example+' = '+ new Date("june 30, 2013 23:59:00")) 
Logger.log(example+' = '+ new Date("june 30, 2013 23:59:00").getTime()+' mS') 
} 

它將在Logger顯示此:

ref date = Thu Jan 01 1970 01:00:00 GMT+0100 (CET) 
june 30, 2013 23:59:00 = Sun Jun 30 2013 23:59:00 GMT+0200 (CEST) 
june 30, 2013 23:59:00 = 1372629540000 mS 

順便說一句,注意記錄器以不同的方式返回值,這取決於日光節省您的時區...我在比利時,六月在'夏季'時間(CEST)。它也可以在Google服務器的時區PDT或PST中顯示。你不能依靠記錄儀是恆定的(!),但是這是另一個故事;-)


編輯:如果你的日期字符串的形式爲DD/MM/YYYY那麼你或許應該重新排序像這樣的代碼:

function playWithTime2(){ 
Logger.log('original date string in UK format = 16/11/2012') 
var d = "16/11/2012".split('/'); 
var d_ordered=d[1]+'/'+d[0]+'/'+d[2] 
Logger.log('becomes '+d_ordered+' = '+new Date(d_ordered)) 
} 

它返回

original date string in UK format = 16/11/2012 
becomes 11/16/2012 = Fri Nov 16 2012 00:00:00 GMT+0100 (CET) 
+0

謝謝Serge的詳細和明確的答案。現在我明白了,我想將工作表中的所有文本日期值轉換爲日期對象。我已經嘗試轉換數組中的值,然後將其應用於工作表,但它似乎失敗 'for(var i = 0; i jad

+0

對不起,我不知道英國的日期格式!高興地聽到,我們共同擁有這個;-)我編輯我的答案和建議轉換日期爲字符串 –

+0

您的幫助非常感謝再次塞爾:)我他們全部轉換爲Date對象,並通過執行發現我的數據簡單的計算,我需要他們在陣列中的位置。 – jad