Grails: как разобрать date.toString () без создания собственного форматера? - PullRequest
2 голосов
/ 20 апреля 2011

У меня есть приложение Grails, которое должно проанализировать даты из строк, которые были созданы с помощью метода date.toString ().

Формат моей системы по умолчанию date.toString () - "Thu Apr 20 00:27:00 CEST 2006", поэтому я знаюЯ могу превратить Date в строку, а затем обратно в объект, используя Date.parse('EEE MMM dd HH:mm:ss z yyyy', new Date().toString()).

Но это неубедительно!Я не должен был перепроектировать формат даты системы по умолчанию.Кроме того, я не уверен, при каких обстоятельствах формат даты по умолчанию может измениться, что приведет к нарушению этого кода.

Существует ли способ синтаксического анализа date.toString () обратно в Date без использования ручной прокруткичто такое форматер?

Спасибо!

Обновление: Я подал этот билет Jira , чтобы получить такую ​​функцию, добавленную Groovy.Кто-то прокомментировал тикет, что Java-метод date.toString () жестко задан для использования EEE MMM dd HH: mm: ss z yyyy.Это отстойно, что Java настолько негибкая, но мне легче жить с жестким кодированием форматера!

Ответы [ 3 ]

3 голосов
/ 20 апреля 2011

Здесь есть страница , показывающая, насколько это плохо в Java (и, следовательно, в Groovy)

Я согласен, что в Groovy должен быть метод Date.parse, который использует этот формат по умолчанию Date.toString().

Может быть, стоит добавить запрос на улучшение по Groovy JIRA ?

В качестве временного решения вы можете добавить свой метод разбора к String metaClass в Bootstrap.groovy?

String.metaClass.parseToStringDate = { Date.parse( 'EEE MMM dd HH:mm:ss z yyyy', delegate ) }

Тогда вы можете сделать:

new Date().toString().parseToStringDate()

в любой части приложения Grails

0 голосов
/ 21 апреля 2011

, если вы используете его для преобразования в json, возможно, код ниже может помочь:

//bootstrap
JSON.registerObjectMarshaller(Date) {
  return it?.format("yyyy-MM-dd HH:mm:ss")
}
0 голосов
/ 20 апреля 2011

Я не работал с Grails и знаю, что это не ответ на ваш вопрос, а как обходной путь, не могли бы вы просто сохранить строку формата в качестве глобальной переменной?

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