SimpleDateFormat を使用した複数の形式の日付の解析
日付の解析は、特に多様な日付形式を扱う場合、困難な作業になる可能性があります。このシナリオでは、ユーザーは、「9/09」や「9/1/2009」などのバリエーションを含む、類似しているが同一ではない形式で日付を入力しました。
この不一致を効果的に処理するには、異なる形式を使用することが不可欠です。一意のパターンごとに SimpleDateFormat オブジェクト。ただし、SimpleDateFormat が数値パターンを解釈する方法のおかげで、必要な形式の数を最小限に抑えることができます。
特に、数値プレースホルダー (月を表す "M" と年を表す "y") を含むパターンの場合、最小数は桁数はパターン文字の数で指定されます。短い数値には、この長さに合わせてゼロが埋め込まれます。ただし、解析中に、隣接するフィールドを分離する必要がない限り、パターン文字の数は無視されます。
この知識を利用して、次の形式を定義できます:
これらの形式を使用すると、次のように日付を解析するメソッドを作成できます。方法:
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Arrays; import java.util.Date; import java.util.List; public class DateParser { public static void main(String[] args) { List<String> formatStrings = Arrays.asList("M/y", "M/d/y", "M-d-y"); String[] dates = {"9/09", "9/2009", "09/2009", "9/1/2009", "9-1-2009"}; for (String dateString : dates) { Date parsedDate = tryParse(dateString, formatStrings); if (parsedDate != null) { System.out.println("Parsed date: " + parsedDate); } else { System.out.println("Unable to parse date: " + dateString); } } } public static Date tryParse(String dateString, List<String> formatStrings) { for (String formatString : formatStrings) { try { return new SimpleDateFormat(formatString).parse(dateString); } catch (ParseException e) { // Do nothing and continue to the next format } } return null; } }
このメソッドは、指定された形式文字列を最も制限の低いものから最も制限の高いものの順に反復処理することにより、各日付文字列を解析し、最初に正常に解析された日付を返します。このアプローチは、コードを不必要に重複させることなく、さまざまな日付形式を効率的に処理します。
以上がSimpleDateFormat は複数の形式の日付を効率的に解析するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。