使用Groovy将日期增加到第二天

问题描述 投票:2回答:2

尝试将1天添加到简单日期格式。

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);

行中出错:

“log info c1.add(Calendar.Date,1);” groovy.lang.MissingPropertyException:没有这样的属性:class for info:Script16 error at line:10

注意:当前日期应该是将来的任何日期,我想增加1天。

datetime groovy soapui datetime-format
2个回答
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


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()
© www.soinside.com 2019 - 2024. All rights reserved.