Groovy 如何在Grails上将Int格式转换为日期格式?

Groovy 如何在Grails上将Int格式转换为日期格式?,groovy,Groovy,如何将整数(40000)转换为日期格式?。在excel中,可以通过将单元格格式从数字更改为日期来完成。 在这种情况下,40000=06/07/2009,整数是自1900年1月1日起的天数 在Grails上有这样做的函数吗 提前谢谢你 如果您位于格林威治以西的时区(负偏移量),addDaysToDate(N)是否会为您提供一个无时间限制的日期,即纪元日期之后的N-1?这是我的理由。考虑 AddiStDoDATE(0)< /代码>。在格林尼治标准时间纪元开始时间加零后,所有这些负小时偏移时区仍将日历

如何将整数(40000)转换为日期格式?。在excel中,可以通过将单元格格式从数字更改为日期来完成。 在这种情况下,40000=06/07/2009,整数是自1900年1月1日起的天数

在Grails上有这样做的函数吗


提前谢谢你

如果您位于格林威治以西的时区(负偏移量),
addDaysToDate(N)
是否会为您提供一个无时间限制的
日期,即纪元日期之后的
N-1
?这是我的理由。考虑<代码> AddiStDoDATE(0)< /代码>。在格林尼治标准时间纪元开始时间加零后,所有这些负小时偏移时区仍将日历日期时间登记为1969年12月31日午夜前的一段短时间。因此,当您
clearTime()
时,它会将时钟进一步向后滚动,直到1969年12月31日日历日开始时的当地午夜,这是盖伊·伦巴多和乐队演奏《友谊地久天长》的前一天。@BalRog在这种情况下,您可以直接使用纪元日期作为
日期。parse(“MM/dd/yyyy”,“1/1/1970”)
@dmahaptro,我同意这将解决眼前的问题,但这里还有一个更深层次的问题<代码>日期。解析(“MM/dd/yyyy”,“1/1/1970”)
对大多数人来说不是“时代”。该表达式与时区有关,但与历元无关。如果答案是参考当地时间,那么最好避免将历元作为默认起点。
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 )