我需要将输入保存为字符串吗?一个整数?
使用 aJTextField
时,您从用户那里得到的输入是 a 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
转换为 aSimpleDateFormat
以获取模式字符串:
if (defaultFormat instanceof SimpleDateFormat) {
SimpleDateFormat sdf = (SimpleDateFormat)defaultFormat;
System.out.println("Use date format like: " + sdf.toPattern());
}
上面@adenoyelle 的评论提醒了我:为你的日期解析代码编写单元测试。