Groovy官网的文档:
www.groovy-lang.org/groovy-dev-…
package jerry;
def date = LocalDate.parse('Jun 3, 04', 'MMM d, yy')
assert date == LocalDate.of(2004, Month.JUNE, 3)
def time = LocalTime.parse('4:45', 'H:mm')
assert time == LocalTime.of(4, 45, 0)
def offsetTime = OffsetTime.parse('09:47:51-1234', 'HH:mm:ssZ')
assert offsetTime == OffsetTime.of(9, 47, 51, 0, ZoneOffset.ofHoursMinutes(-12, -34))
def dateTime = ZonedDateTime.parse('2017/07/11 9:47PM Pacific Standard Time', 'yyyy/MM/dd h:mma zzzz')
assert dateTime == ZonedDateTime.of(
LocalDate.of(2017, 7, 11),
LocalTime.of(21, 47, 0),
ZoneId.of('America/Los_Angeles')
)
println 'time check done!'
这段代码无法直接执行,报错误消息:
Caught: groovy.lang.MissingPropertyException: No such property: LocalDate for class: jerry.helloWorld
groovy.lang.MissingPropertyException: No such property: LocalDate for class: jerry.helloWorld
at jerry.helloWorld.run(helloWorld.groovy:3)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
docs.groovy-lang.org/latest/html…
需要先导入java.time包:
如下图,导入java.time.*之后,Eclipse里的LocalDate,LocalTime都高亮显示了:
官网的代码无法直接运行,需要把所有parse方法的第二个参数,即字符串类型的format:
def date = LocalDate.parse(‘Jun 3, 04’, ‘MMM d, yy’)
全部替换成用方法DateTimeFormatter.ofPattern返回:
package jerry;
import java.time.*
import java.time.format.DateTimeFormatter
CharSequence sequence = 'Jun 3, 04';
java.time.format.DateTimeFormatter formatter = DateTimeFormatter.ofPattern('MMM d, yy');
def date = LocalDate.parse(sequence, formatter)
println( "formatted: " + date.toString())
assert date == LocalDate.of(2004, Month.JUNE, 3)
def time = LocalTime.parse('4:45', DateTimeFormatter.ofPattern('H:mm'))
assert time == LocalTime.of(4, 45, 0)
def offsetTime = OffsetTime.parse('09:47:51-1234', DateTimeFormatter.ofPattern('HH:mm:ssZ'))
assert offsetTime == OffsetTime.of(9, 47, 51, 0, ZoneOffset.ofHoursMinutes(-12, -34))
def dateTime = ZonedDateTime.parse('2017/07/11 9:47PM Pacific Standard Time', DateTimeFormatter.ofPattern('yyyy/MM/dd h:mma zzzz'))
assert dateTime == ZonedDateTime.of(
LocalDate.of(2017, 7, 11),
LocalTime.of(21, 47, 0),
ZoneId.of('America/Los_Angeles')
)
println 'time check done!'
修改后的代码如下:
要获取更多Jerry的原创文章,请关注公众号"汪子熙":