SoapUI 和 Groovy 将日期转换为 yyyy-MM-dd 的问题
SoapUI and problem with Groovy Convert date to yyyy-MM-dd
我用它来添加日期日期,然后将日期格式设置为 yyyy-MM-dd。但自从新的 SoapUI 版本以来,这不再有效。
import static java.util.Calendar.*
String myOrderDate(int nrOfDays){
def date = new Date()
def datePlus = date.clone()
datePlus = datePlus + nrOfDays
return datePlus.format('YYYY-MM-dd')
}
相反,我得到堆栈跟踪:
groovy.lang.MissingMethodException: No signature of method: java.util.Date.plus() is applicable for argument types: (Integer)
我做错了什么?
import static java.util.Calendar.*
String myOrderDate(int nrOfDays){
def date = new Date()
def datePlus = date.clone()
datePlus = datePlus.plus(nrOfDays)
return datePlus.format('YYYY-MM-dd')
}
你可以做得更短:
import static java.util.Calendar.*
String myOrderDate(int nrOfDays){
def date = new Date()
return date.plus(nrOfDays).format('YYYY-MM-dd')
}
由于导入库存在问题,也许您应该坚持使用 Java 方式。试试下面的代码:
import java.time.LocalDate
import java.time.format.DateTimeFormatter
String myOrderDate(int nrOfDays){
def date = LocalDate.now().plusDays(nrOfDays)
return date.format(DateTimeFormatter.ofPattern(('YYYY-MM-dd')))
}
如果您添加对 groovy-dateutil
.
的依赖,您的代码将可以正常工作
在 https://github.com/jeffbrown/groovydate 查看项目。
在 lib/src/main/groovy/groovydate/Library.groovy 处,您的方法是按原样复制和粘贴的。
package groovydate
class Library {
String myOrderDate(int nrOfDays) {
def date = new Date()
def datePlus = date.clone()
datePlus = datePlus + nrOfDays
return datePlus.format('YYYY-MM-dd')
}
}
lib/src/test/groovy/groovydate/LibraryTest.groovy 的测试通过:
package groovydate
import spock.lang.Specification
class LibraryTest extends Specification {
def "test order date"() {
given:
def lib = new Library()
when:
lib.myOrderDate(4)
then:
noExceptionThrown()
}
}
表示的依赖关系才有效
implementation 'org.codehaus.groovy:groovy-dateutil:3.0.9'
如果没有 dateutil
,运行时将抱怨缺少方法,因为它不存在没有缺少的依赖项。
我用它来添加日期日期,然后将日期格式设置为 yyyy-MM-dd。但自从新的 SoapUI 版本以来,这不再有效。
import static java.util.Calendar.*
String myOrderDate(int nrOfDays){
def date = new Date()
def datePlus = date.clone()
datePlus = datePlus + nrOfDays
return datePlus.format('YYYY-MM-dd')
}
相反,我得到堆栈跟踪:
groovy.lang.MissingMethodException: No signature of method: java.util.Date.plus() is applicable for argument types: (Integer)
我做错了什么?
import static java.util.Calendar.*
String myOrderDate(int nrOfDays){
def date = new Date()
def datePlus = date.clone()
datePlus = datePlus.plus(nrOfDays)
return datePlus.format('YYYY-MM-dd')
}
你可以做得更短:
import static java.util.Calendar.*
String myOrderDate(int nrOfDays){
def date = new Date()
return date.plus(nrOfDays).format('YYYY-MM-dd')
}
由于导入库存在问题,也许您应该坚持使用 Java 方式。试试下面的代码:
import java.time.LocalDate
import java.time.format.DateTimeFormatter
String myOrderDate(int nrOfDays){
def date = LocalDate.now().plusDays(nrOfDays)
return date.format(DateTimeFormatter.ofPattern(('YYYY-MM-dd')))
}
如果您添加对 groovy-dateutil
.
在 https://github.com/jeffbrown/groovydate 查看项目。
在 lib/src/main/groovy/groovydate/Library.groovy 处,您的方法是按原样复制和粘贴的。
package groovydate
class Library {
String myOrderDate(int nrOfDays) {
def date = new Date()
def datePlus = date.clone()
datePlus = datePlus + nrOfDays
return datePlus.format('YYYY-MM-dd')
}
}
lib/src/test/groovy/groovydate/LibraryTest.groovy 的测试通过:
package groovydate
import spock.lang.Specification
class LibraryTest extends Specification {
def "test order date"() {
given:
def lib = new Library()
when:
lib.myOrderDate(4)
then:
noExceptionThrown()
}
}
表示的依赖关系才有效
implementation 'org.codehaus.groovy:groovy-dateutil:3.0.9'
如果没有 dateutil
,运行时将抱怨缺少方法,因为它不存在没有缺少的依赖项。