【问题标题】:Java grails: Cannot cast object 'Mon Feb 12 00:00:00 PKT 2018' with class 'java.util.Date' to class 'org.joda.time.LocalDate'Java grails:无法将具有类'java.util.Date'的对象'Mon Feb 12 00:00:00 PKT 2018'转换为类'org.joda.time.LocalDate'
【发布时间】:2020-07-19 09:16:24
【问题描述】:

我遇到了 grails new SimpleDateFormat 的问题。

由于我通过 API 从其他服务器接收日期时间格式的数据,因此我尝试使用 SimpleDateTimeFormat 将字符串转换为日期时间,

在数据库中保存数据时出现以下错误,请查看下面的代码

错误:

Cannot cast object 'Mon Feb 12 00:00:00 PKT 2018' with class 'java.util.Date' to class 'org.joda.time.LocalDate'

域类

import org.joda.time.LocalDate

LocalDate startDate

代码:

def pattern = "yyy-MM-dd"
        def startDateStr = [pathtofield].Value
        def stringToDate = new SimpleDateFormat(pattern).parse(startDateStr)

[domainclass].startDate = stringToDate

请帮忙。

【问题讨论】:

  • SimpleDateFormat.parse 返回 java.util.Date,而不是 org.joda.time.LocalDate。请改用 Jodatime 提供的适当格式。

标签: java date grails groovy


【解决方案1】:
    def formatter = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss")
    
    def startDateStr = "2018-02-12 00:00:00"
    def stringToDate = formatter.parseLocalDate(startDateStr)
    
    [domainclass].startDate = stringToDate

我在不知道grails的情况下运行了对应的Java代码和手工翻译的代码,请原谅我可能犯的任何错误。在任何情况下,formatter.parseLocalDate() 都会为您提供 Joda-Time LocalDate,我从您的错误消息中了解到这就是您所需要的。

对于格式化程序,不要考虑SimpleDateFormat。一,它是一个臭名昭著的麻烦制造者,二,它不适用于 Joda-Time 课程。正如 Mark Rotteveel 在评论中所说,Joda-Time 拥有自己的 DateTimeFormatter 类,用于解析和格式化其日期和时间对象。

【讨论】:

  • 感谢 Ole,但是当我尝试在您的路上实现这一目标时,我收到以下错误 Invalid format: "2018-02-12 00:00:00" is malformed at " 00:00:00"
  • @MuhammadOwais 如果你从一开始就告诉我们你的字符串的格式会更好,我从你的问题中了解到它是yyy-MM-dd,在这种情况下我的回答是正确的.我现在已经编辑以适合您的2018-02-12 00:00:00
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-04
  • 2010-11-24
  • 2013-04-05
  • 2014-04-24
  • 2012-06-21
  • 1970-01-01
相关资源
最近更新 更多