入力を文字列として保存する必要がありますか? 整数?
を使用する場合JTextField
、ユーザーから取得する入力は です。これは、選択した日付形式に応じて、日付にや などのString
文字が含まれる可能性があるためです。もちろん、入力フィールドがすでに日付形式を検証しており、日、月、年に個別の値を返す、より洗練された入力方法を使用することもできますが、使用する方が簡単です。.
-
JTextField
また、どのような形式にする必要がありますか (yyyyMMdd など)?
これは要件によって異なります。SimpleDateFormatクラスを使用して、任意の日付形式を解析できます。
String input = "20130507";
String format = "yyyyMMdd";
SimpleDateFormat df = new SimpleDateFormat(format);
Date date = df.parse(input);
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int week = cal.get(Calendar.WEEK_OF_YEAR);
ただし、ロケールに固有の日付形式を使用する可能性が高くなります。
import java.text.DateFormat;
DateFormat defaultFormat = DateFormat.getDateInstance();
Date date = defaultFormat.parse(input);
どの形式を使用するかについてユーザーにヒントを与えるには、DateFormat
を aにキャストしSimpleDateFormat
てパターン文字列を取得する必要があります。
if (defaultFormat instanceof SimpleDateFormat) {
SimpleDateFormat sdf = (SimpleDateFormat)defaultFormat;
System.out.println("Use date format like: " + sdf.toPattern());
}
上記の @adenoyelle のコメントを思い出してください: Write unit tests for your date parsing code。