Grails:カスタムフォーマッタを作成せずにdate.toString()を解析する方法

date grails groovy
Grails:カスタムフォーマッタを作成せずにdate.toString()を解析する方法

date.toString()メソッドで作成された文字列から日付を解析する必要があるGrailsアプリケーションがあります。

私のシステムのデフォルトのdate.toString()形式は `” Thu Apr 20 00:27:00 CEST 2006 “`なので、Dateを文字列に変換してから、Date.parse( ‘EEE MMMを使用してオブジェクトに戻すことができます。 dd HH:mm:ss z yyyy ‘、新しいDate()。toString()) `。

しかし、それはラメです! システムのデフォルトの日付形式をリバースエンジニアリングする必要はありません。 さらに、どのような状況下でデフォルトの日付形式が変更される可能性があるのか​​わからないため、そのコードが壊れます。

そのような手巻きのフォーマッタを使用せずにdate.toString()を解析してDateに戻す方法はありますか?

ありがとうございます。

*更新:*私はhttp://jira.codehaus.org/browse/GROOVY-4789 [このJiraチケット]を申請して、Groovyを追加したこのような機能を取得しました。 誰かが、Javaのdate.toString()メソッドがEEE MMM dd HH:mm:ss z yyyyを使用するようにハードコーディングされているとチケットにコメントしました。 これはJavaが非常に柔軟性に欠けるのを嫌いますが、フォーマッターをハードコーディングするのが楽になります!

  2  1


ベストアンサー

http://javatechniques.com/blog/dateformat-and-simpledateformat-examples/ [こちらのページ]には、これがJavaで(そしてGroovyで)どれほど悪いかが示されています

Groovyには、このデフォルトの `Date.toString()`形式を使用する `Date.parse`メソッドが必要であることに同意します。

たぶん、http://jira.codehaus.org/browse/GROOVY [Groovy JIRA]に改善要求を追加する価値はありますか?

一時的な回避策として、 Bootstrap.groovy`の String metaClass`に解析メソッドを追加できますか?

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

それからあなたはすることができます:

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

grailsアプリのグルーヴィーな部分のどこにでも

3


私はGrailsを使用したことがなく、これがあなたの質問に対する答えではないことを知っていますが、回避策として、フォーマット文字列をグローバル変数として保存することはできませんか?

0


それを使用してjsonに変換する場合、以下のコードが役立つ可能性があります:

//bootstrap
JSON.registerObjectMarshaller(Date) {
  return it?.format("yyyy-MM-dd HH:mm:ss")
}

0


タイトルとURLをコピーしました