【问题标题】:Increment date to the next day using Groovy使用 Groovy 将日期递增到第二天
【发布时间】:2017-12-18 13:08:44
【问题描述】:

尝试在简单日期格式中添加 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);

行中发生错误:

"日志信息 c1.add(Calendar.Date,1);" groovy.lang.MissingPropertyException:No such property: info for class: Script16 error at line: 10

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

【问题讨论】:

标签: datetime groovy soapui datetime-format


【解决方案1】:

您可以使用TimeCategory添加日期,如下图:

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

编辑:基于 OP cmets

还有一个方法是动态添加方法,比如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 天。 'currentDate.next()' 这很好用。
  • @rAJ,你在上面看到的这么简单吗?而不是new Date() 传递任何日期,只需按照答案中给出的+ 1.day 来获得第二天。
  • @rAJ,您可能会发现EDIT 部分更有帮助,因为它使用了一种易于使用的方法nextDay
  • 另一个选项:日期 newDate = use(groovy.time.TimeCategory) { previousDate + 1.day }
【解决方案2】:

好吧,您提供的错误清楚地告诉您,您有语法错误。它说没有属性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()

【讨论】:

  • 新日期开始时检查。它在末尾显示冒号。例如:'2017-12-1:'
猜你喜欢
  • 1970-01-01
  • 2012-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-15
  • 2017-08-25
相关资源
最近更新 更多