You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Groovy中java.util.Date.parse()方法调用报错问题咨询

解决Groovy中Date.parse()方法调用异常的问题

问题分析

你碰到的groovy.lang.MissingMethodException是因为在新版Groovy里,java.util.Date的实例已经没有接受两个参数的parse方法了。旧版Groovy曾给Date实例添加过这个扩展方法,但新版本中它被调整为静态方法,而你写的new Date().parse("d/M/yyyy H:m:s", theDate)实际上会去调用Java原生的Date.parse()——这个原生方法只接受一个参数,自然会因为参数不匹配报错。

解决办法

这里提供两种可行的方案,你可以根据需求选择:

方案1:使用Groovy的静态Date.parse方法

直接调用静态方法,不需要先创建Date实例,这是最贴合你原有代码逻辑的修改方式:

String theDate = "28/09/2010 16:02:43";
def newdate = Date.parse("d/M/yyyy H:m:s", theDate);

执行后就能得到你预期的Tue Sep 28 16:02:43 CEST 2010结果。

方案2:使用Java 8+的现代日期API(推荐)

由于java.util.Date是已过时的API,更推荐使用Java 8引入的java.time包下的日期类,比如LocalDateTime,配合DateTimeFormatter来解析日期:

import java.time.LocalDateTime
import java.time.format.DateTimeFormatter
import java.time.ZoneId

String theDate = "28/09/2010 16:02:43"
// 定义日期格式
def formatter = DateTimeFormatter.ofPattern("d/M/yyyy H:m:s")
// 解析为LocalDateTime对象
def localDateTime = LocalDateTime.parse(theDate, formatter)

// 如果需要兼容旧代码,转换成java.util.Date:
def utilDate = Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant())

这种方式更安全,也避免了旧API的各种线程安全和设计缺陷问题。

内容的提问来源于stack exchange,提问作者Filip Kostroš

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 09:23:39