NSDate преобразование строки даты в java.util.date - PullRequest
1 голос
/ 23 января 2012

У меня есть сервер Grails, который получает запрос JSON с NSDate.Дата, которую я получаю, имеет следующий формат:

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);

Отформатированная дата выглядит так: Вс 22 января 20:47:27 PST 2012

Когда я пытаюсь сделать save (),Я получаю следующую ошибку:

org.springframework.validation.BeanPropertyBindingResult: 1 ошибка

Ошибка поля в объекте 'com.test.date' в поле 'StartDate': отклоненное значение[Вс 22 января 20:47:27 PST 2012];коды [typeMismatch.com.test.date.eventStartDate, typeMismatch.StartDate, typeMismatch.java.util.Date, typeMismatch];Аргументы [org.springframework.context.support.DefaultMessageSourceResolvable: codes [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 ]

1 голос
/ 23 января 2012

Я не думаю, что ваш код компилируется, как показано, но в любом случае похоже, что вы форматируете дату, а затем немедленно сохраняете (и в конечном итоге пытаетесь сохранить) ее строковое представление. Просто удалите лишнее ненужное преобразование в строку:

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z");
Date date = formatter.parse(request.JSON.StartDate);
0 голосов
/ 24 января 2012

НЕВЕРОЯТНОЕ !!!!Я два дня боролся с этой проблемой, и оказалось, что проблема заключается в имени свойства класса Grails, которое я использовал.Я использовал «eventStartDate» ранее, и когда я изменил его на «DOB», он начал работать отлично.

Я очень плохо знаком с Grails и не очень уверен насчет ограничений имен, но я усвоил хороший урок, чтобы не игнорироватьдопустимое именование;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...