Java で任意の日付を解析する
質問:
その称賛にもかかわらず、Joda 時間は必要ですユーザーは解析する前に日付形式を手動で指定できます。 python-dateutil に似た、幅広い日付形式を簡単に解析できる Java ライブラリはありますか?
答え:
一方、Python の dateutil ライブラリは柔軟な日付に優れています。解析し、Java で同等の結果を達成するには、実用的な方法が必要ですアプローチ:
1.正規表現のマッチング:
正規表現は、日付形式のパターンを識別する強力な手段を提供します。一般的な日付形式を対応する正規表現にマッピングすることで、特定の日付文字列の正しい形式を決定できます。
private static final Map<String, String> DATE_FORMAT_REGEXPS = new HashMap<>() {{ put("^\d{8}$", "yyyyMMdd"); put("^\d{1,2}-\d{1,2}-\d{4}$", "dd-MM-yyyy"); put("^\d{4}-\d{1,2}-\d{1,2}$", "yyyy-MM-dd"); // … (other format patterns) }}; public static String determineDateFormat(String dateString) { for (String regexp : DATE_FORMAT_REGEXPS.keySet()) { if (dateString.toLowerCase().matches(regexp)) { return DATE_FORMAT_REGEXPS.get(regexp); } } return null; // Unknown format. }
2.ブルート フォース:
日付形式を正規表現で決定できない場合は、最後の手段としてブルート フォースを使用できます。一般的な日付形式のコレクションを繰り返し処理し、それぞれの形式で日付文字列の解析を試みます。
public static Date parseDate(String dateString) { String dateFormat = determineDateFormat(dateString); if (dateFormat != null) { return new SimpleDateFormat(dateFormat).parse(dateString); } // Brute force using common formats for (String format : COMMON_DATE_FORMATS) { try { return new SimpleDateFormat(format).parse(dateString); } catch (ParseException e) { // Ignore parsing error } } throw new IllegalArgumentException("Invalid date format: " + dateString); }
正規表現一致とブルート フォースを組み合わせることで、Java で幅広い日付形式を解析できます。 Python の dateutil ライブラリよりも少し手間がかかります。
以上がJava は Python の dateutil と同じくらい柔軟に日付を解析できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。