2014-10-29 41 views
1

如何將整數(40000)轉換爲日期格式?在Excel中可以通過更改單元格的編號來完成日期。 在這種情況下,40000 = 2009年6月7日,整數是自1/1/1900以來的天數如何將Int轉換爲Grails上的日期格式?

是否有一個函數可以在Grails上執行此操作?

預先感謝您!

回答

3
Date addDaysToDate(int noOfDays, Date initDate = null) { 
    // If init date provided, add date to it otherwise 
    // consider epoch (1/1/1970 GMT) as init date 
    ((initDate ?: new Date(0)) + noOfDays).clearTime() 
} 

println addDaysToDate(40000, Date.parse("MM/dd/yyyy", "1/1/1900")) 
println addDaysToDate(40000) 
+0

如果您位於格林威治西部的時區(負偏移量),那麼addDaysToDate(N)不會爲您提供一個永恆的'Date',它是'N-1'天后時代日期?這是我的推理。考慮'addDaysToDate(0)'。在GMT時代開始時加零後,所有這些負小時偏移時區仍然在「12/31/1969」午夜前的某個短時間內註冊日曆日期時間。因此,當你'clearTime()'時,它會在時間日更早的時間回到本地時間12月31日開始的日曆日,在Guy Lombardo和樂隊演奏的前一天* Auld Lang Syne * 。 – BalRog 2014-11-01 04:23:11

+0

@BalRog在這種情況下,您可以直接使用時間日期作爲Date.parse(「MM/dd/yyyy」,「1/1/1970」) – dmahapatro 2014-11-04 17:05:07

+0

@dmahaptro,我同意這會解決眼前的問題,但在那裏這裏是一個更深層的問題。 Date.parse(「MM/dd/yyyy」,「1/1/1970」)對大多數人來說不是「大紀元」。該表達與時區有關,但時代不是。如果答案要引用當地時間,那麼最好避免將Epoch作爲默認起點。 – BalRog 2014-11-05 18:00:26

相關問題