Joda Date & Time API を使って複数のフォーマットをパースする
2023-09-23 17:15:06
質問
Jodaを使って、日付/時刻を含むサードパーティのログファイルを解析しています。日付/時刻は、私が解析しているログファイルの年齢に応じて、2つの異なるフォーマットのうちの1つです。
現在、私はこのようなコードを持っています。
try {
return DateTimeFormat.forPattern("yyyy/MM/dd HH:mm:ss").parseDateTime(datePart);
} catch (IllegalArgumentException e) {
return DateTimeFormat.forPattern("E, MMM dd, yyyy HH:mm").parseDateTime(datePart);
}
これは動作しますが、Effective Java 2nd EditionのJoshua Blochのアドバイス(Item 57: Use exceptions only for exceptional conditions)に反しています。また、ログファイルの日付/時刻が狂っているためにIllegalArgumentExceptionが発生したかどうかを判断するのが難しくなります。
例外を誤用しない、より良いアプローチを提案できますか?
どのように解決するのですか?
複数のパーサを作成し、ビルダーに追加するには DateTimeFormatterBuilder.append メソッドで追加できます。
DateTimeParser[] parsers = {
DateTimeFormat.forPattern( "yyyy-MM-dd HH" ).getParser(),
DateTimeFormat.forPattern( "yyyy-MM-dd" ).getParser() };
DateTimeFormatter formatter = new DateTimeFormatterBuilder().append( null, parsers ).toFormatter();
DateTime date1 = formatter.parseDateTime( "2010-01-01" );
DateTime date2 = formatter.parseDateTime( "2010-01-01 01" );
関連
-
Java Notes 005_この行に複数のマーカーがある - キーを変数に解決できない - シンタックスエラー、ins
-
SpringBoot 起動エラー java.nio.charset.MalformedInputException: 入力長 = 2 解決
-
[解決済み】C++で文字列区切り文字を使ったパース(分割)(標準C++)について)
-
[解決済み】Joda Timeライブラリを使用して、日付文字列をDateTimeオブジェクトに変換する。
-
[解決済み】Joda-TimeのDateTimeをmm/dd/yyyyのみにフォーマットする方法は?
-
[解決済み】Joda-Time:Period、Interval、Durationの違いは何ですか?
-
[解決済み】Joda-Timeの2つの日付の間の日数について
-
[解決済み】Java 8 の Date Time API (java.time) と Joda-Time の相違点
-
[解決済み] 2つのJoda-TimeのDateTimesの差を数分で見つける方法
-
[解決済み] Java日付と時間クラスを使うべきか、Joda Timeのようなサードパーティライブラリを使うべきか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Eclipse の問題 アクセス制限。タイプ 'jfxrt' はAPI解決されていません。
-
ApplicationContextの起動エラーです。条件レポートを表示するには、アプリケーションを'de'で再実行します。
-
java -jarコマンドでパッケージを実行すると、無効または破損したjarfile xxxx.jarが表示される。
-
-bash: java: コマンドが見つからない 解決方法
-
SpringBoot 起動エラー java.nio.charset.MalformedInputException: 入力長 = 2 解決
-
Javaがテキストファイルを読み込む
-
コンストラクタDate()が未定義である問題
-
Spring Bootは、Tomcatの組み込みのmaxPostSizeの値を設定します。
-
linux ant Resolve error: main class not found or couldn't be loaded org.apache.tools.ant.launcher.
-
CAS 5.1.8でhttpをサポートし、認証されていない認可サービスエラーのプロンプトが表示される問題を解決した。