2017-12-18 494 views
1

嘗試將1天添加到簡單日期格式。發生在線路使用Groovy將日期遞增到第二天

import java.text.SimpleDateFormat 
Date date = new Date(); 
def dateformat = new SimpleDateFormat("YYYY-MM-dd") 
def currentDate = dateformat.format(date) 
log.info "Current Date : " + currentDate 

Date date1 = (Date)dateformat.parse(currentDate); 
Calendar c1 = Calendar.getInstance(); 
c1.setTime(date1); 
log info c1.add(Calendar.Date,1); 

錯誤:

「日誌c1.add信息(Calendar.Date,1);」 groovy.lang.MissingPropertyException:沒有這樣的屬性:類信息:Script16行錯誤:10

注:當前的日期應該是在未來的任何日期,我想1天遞增。

+0

請查看解決看看是否有幫助。 – Rao

+0

[在Groovy中以小時/分鐘遞增日期對象]的可能重複(https://stackoverflow.com/questions/21166927/incrementing-date-object-by-hours-minutes-in-groovy) – tkruse

回答

1

您可以使用TimeCategory添加一天如下圖所示:

use(groovy.time.TimeCategory) { 
    def tomorrow = new Date() + 1.day 
    log.info tomorrow.format('yyyy-MM-dd') 
} 

編輯:基於OP評論

這裏是另一個遠離這是動態地添加方法,說nextDay()Date類。

//Define the date format expected 
def dateFormat = 'yyyy-MM-dd' 

Date.metaClass.nextDay = { 
    use(groovy.time.TimeCategory) { 
     def nDay = delegate + 1.day 
     nDay.format(dateFormat) 
    } 
} 

//For any date 
def dateString = '2017-12-14' 
def date = Date.parse(dateFormat, dateString) 
log.info date.nextDay() 


//For current date 
def date2 = new Date() 
log.info date2.nextDay() 

您可以快速地在同一線上demo

+0

這總是給我明天的日期,但我想要我的日期是什麼,它應該增加1天。 'currentDate.next()'這個效果很好。 – rAJ

+0

@rAJ,你看到右邊那麼簡單嗎?而不是'new Date()'傳遞任何日期,只是按照答案中給出的'+ 1.day'來獲取第二天。 – Rao

+0

@rAJ,你可能會發現'EDIT'部分更有用,因爲它使用了一種簡單的'nextDay'方法。 – Rao

1

那麼,你提供的錯誤清楚地告訴你,你有一個語法錯誤。它說沒有財產info

這是因爲你寫

log info c1.add(Calendar.Date,1); 

,而不是

log.info c1.add(Calendar.Date,1); 

如果你要使用正確的語法,它會抱怨Calendar沒有財產Date

所以不是

c1.add(Calendar.Date, 1) 

你的意思

c1.add(Calendar.DAY_OF_MONTH, 1) 

但在Groovy中,你甚至可以更容易,使用

c1 = c1.next() 
+0

新鮮日期開始時檢查。它在結尾處顯示冒號。例如:'2017-12-1:' – rAJ