groovy next() 日期问题

groovy next() date issue

我正在尝试在 SoapUI 中添加一个 groovy 脚本,以使用当前日期中的 next() 查找明天的日期。 除了日期为 19 以外,我得到所有其他日期的预期日期。

def TodaysDate = new java.util.Date().format("yyyy-MM-dd")
log.info ">>>>>>>>>> TodaysDate="+TodaysDate
log.info TodaysDate.next()

输出:

Wed Jul 19 14:34:29 EDT 2017:INFO:>>>>>>>>>> TodaysDate=2017-07-19
Wed Jul 19 14:34:29 EDT 2017:INFO:2017-07-1:

我也试过了。

def Today = new java.text.SimpleDateFormat("yyyy-MM-dd").format(new Date())
log.info Today
NextDay = Today.next()
log.info NextDay 

输出:

Wed Jul 19 14:43:38 EDT 2017:INFO:2017-07-19
Wed Jul 19 14:43:38 EDT 2017:INFO:2017-07-1:

next() 迭代器适用于其他日期。你能帮我理解我在这里做错了什么吗?

format()方法returns一个String。当你在 String 上调用 next() 时,它 increments the last character. So, character 9 is incremented 到下一个 unicode 值,变成 :.

如果您想要特定格式的日期,首先在 Date 对象中调用 next(),然后对其进行格式化:

def TodaysDate = new java.util.Date()
log.info ">>>>>>>>>> TodaysDate="+TodaysDate.format("yyyy-MM-dd")
log.info TodaysDate.next().format("yyyy-MM-dd")

将打印 TodaysDate=2017-07-19 和下一个日期 2017-07-20

或许在您的情况下使用 TimeCategory 是值得的?看看这个简单的代码示例:

import groovy.time.TimeCategory

use (TimeCategory) {
    println new Date() + 1.day
}

它适用于任何日期。使用今天的日期 (2017-07-19) 对其进行测试 - 添加 1.day 将为您提供 2017-07-20。希望对你有帮助。