私は外部ツールのコマンドラインインターフェイスのパーサを作成しています。私はScalaのパーサーコンビネータライブラリを使用しています。これの一部として、フォーマットEEE MMM d HH:mm:ss yyyy Zの標準日付を解析する必要があります。標準パターンのCharSequenceから日付を解析します。
Scalaのパーサーコンビネータは「ストリームベース」であり、StringsではなくCharSequenceで機能します。そのため、両方ともStringで動作するため、java.text.DateTimeFormatまたはDateTimeFormat(JodaTimeのいずれか)を使用するのが難しくなります。
現在のところ、このような独自の正規表現パーサーを作成して日付を解析することはできませんが、JodaTimeで行った作業をパーサーに組み込むことになります。私は本当にホイールを再構築したくありません。私はJodaTimeのソースコードを見てきました。なぜCharSequencesだけでなくStringを使用する必要があるのかよく分かりません。私はいくつかの側面を欠いていますか?
ああ、私は参照してください。だから本質的には、ネットワークからの次のバイトが来るとすぐdatetime regex lexerが進まなければなりません。フォワードjoda-timeを除いてそれを行う他の方法はないと思われ、regexを使うか、独自のストリームベース/正規表現日時解析ライブラリを作成し、私たちと共有してください。私はまだあなたの答えがここに行く方法だと信じています。 –
ええ、他のストリームベースの日時解析ライブラリは見つかりませんでした。プラスjoda-timeは、とにかく使用するoneandonly date APIです。私はStephen Colebourneに電子メールを送り、CharSequenceを解析することに同意しましたが、後方互換性の問題があるため、何も約束できませんでした。最悪の場合、私は私のフォークを維持する必要があります:) –
そうではありません。私はjoda-timeがすべてのdatetimeのニーズのための最終的なソリューションだとは言いません。私は、joda-timeのパターンが必要なフォーマットを表現できない状況に直面しました.SimpleDateFormat(ISO 8601とRFC 3339にはさまざまなバリエーションがあります)に戻ってしまいました。 –