在我的Java应用程序中,我使用DateFormat实例来解析日期输入.
DateFormat fmt;
fmt = DateFormat.getDateInstance(DateFormat.DEFAULT) // dd.MM.yyyy for de_DE
Run Code Online (Sandbox Code Playgroud)
问题是用户坚持在表单中输入日期31.12.11.
不幸的是,这被解析为31.12.11.(0011-12-31以ISO格式)相反,我想要解析日期31.12.2011(2011-12-31以ISO格式).
我可以修改日期格式以某种方式解析输入吗?
jos*_*row 11
您必须使用dd.MM.yy格式进行解析,并使用yyyy-MM-dd格式重新格式化
DateFormat sdfp = new SimpleDateFormat("dd.mm.yy");
Date d = sdfp.parse(input);
DateFormat sdff = new SimpleDateFormat("yyyy-MM-dd");
String date = sdff.format(d);
Run Code Online (Sandbox Code Playgroud)
有关设置模式的更多信息,请参阅Java API.
http://download.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html
您的解决方案非常简单,允许使用包含该方法的SimpleDateFormat set2DigitYearStart(Date startDate).也许它看起来像这样.
String userInput = "31.12.11";
SimpleDateFormat format = new SimpleDateFormat("dd.MM.yy");
format.set2DigitYearStart(new GregorianCalendar(2001,1,1).getTime());
Date userEnteredDate = format.parse(userInput, 1); // parsed to 2011-12-31
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5855 次 |
| 最近记录: |