2012-01-23 123 views
1

我有一個接收具有NSDate的JSON請求的grails服務器。我收到的日期如下格式:NSDate日期字符串轉換爲java.util.date

2012-01-23 4時47分27秒+0000

我需要將其轉換爲Java數據格式能夠存儲。我做了轉換以下:

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

格式化的日期出來爲:太陽1月22日20時47分27秒的PST 2012

當我嘗試做一個保存(),我得到以下錯誤:

org.springframework.validation.BeanPropertyBindingResult: 1 errors

Field error in object 'com.test.date' on field 'StartDate': rejected value [Sun Jan 22 20:47:27 PST 2012]; codes [typeMismatch.com.test.date.eventStartDate,typeMismatch.StartDate,typeMismatch.java.util.Date,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [com.test.date.StartDate,StartDate]; arguments []; default message [StartDate]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date' for property 'StartDate'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type [java.util.Date] for property 'StartDate': no matching editors or conversion strategy found]

任何人都可以告訴我這有什麼問題,我需要看什麼?

編輯:

其實我得到的錯誤,甚至當我做到以下幾點:

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

這並不是由於格式化! 謝謝!

回答

1

我不認爲你的代碼編譯如圖所示,但無論如何它看起來像你格式化日期,然後立即存儲(並最終試圖保存)其字符串表示。只是刪除多餘的不必要的轉換爲字符串:

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

對不起,我試圖讓後簡單,犯了一個錯誤。我實際上是把格式化程序的結果放入Date中。我編輯了這篇文章。 – iKT

0

UnBelievable !!!!我在這個問題上掙扎了兩天,事實證明我正在使用的Grails域類屬性名稱是問題。我之前使用「eventStartDate」,當我將其更改爲「DOB」時,它開始正常工作。

我很新的Grails和不是很肯定的命名限制,但我學到了很好的教訓不能忽視的允許命名;)

相關問題