NSDate日期字符串转换为java.util.date

时间:2012-01-23 05:09:26

标签: java ios grails

我有一个grails服务器,它接收一个具有NSDate的JSON请求。我收到的日期格式如下:

2012-01-23 04:47:27 +0000

我需要将其转换为JAVA数据格式才能存储。我正在做以下转换:

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z");
Date date = (Date)formatter.parse(request.JSON.StartDate);

格式化日期如下:Sun Jan 22 20:47:27 PST 2012

当我尝试执行save()时,出现以下错误:

  

org.springframework.validation.BeanPropertyBindingResult:1个错误

     

字段'Sta​​rtDate'中对象'com.test.date'中的字段错误:被拒绝   价值[太阳1月22日20:47:27太平洋标准时间2012];代码   [typeMismatch.com.test.date.eventStartDate,typeMismatch.StartDate,typeMismatch.java.util.Date,typeMismatch];   参数   [org.springframework.context.support.DefaultMessageSourceResolvable:   代码[com.test.date.StartDate,StartDate];参数[];默认   消息[StartDate]];默认消息[无法转换属性   类型'java.lang.String'的值为必需类型'java.util.Date'   物业'StartDate';嵌套异常是   java.lang.IllegalStateException:无法转换类型的值   [java.lang.String]为属性所需的类型[java.util.Date]   'StartDate':找不到匹配的编辑器或转换策略]

任何人都可以告诉我这有什么问题,我需要了解什么?

编辑:

即使我执行以下操作,我实际上也会收到错误:

object.date = new Date()
object.save()

这不是因为格式化!! 谢谢!

2 个答案:

答案 0 :(得分:1)

我不认为你的代码编译如图所示,但无论如何看起来你正在格式化一个日期,然后立即存储(并最终试图保存)它的String表示。只需删除对String的额外不必要的转换:

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z");
Date date = formatter.parse(request.JSON.StartDate);

答案 1 :(得分:0)

难以置信!!!!我在这个问题上挣扎了两天,结果发现我使用的Grails域类属性名是问题。我之前使用的是“eventStartDate”,当我将其更改为“DOB”时,它开始完美运行。

我对Grails很新,并且对命名限制不太确定,但我学到了一个很好的教训,不要忽略允许的命名;)