我正在尝试将“dd-MM-yy”格式的String
解析为Date
对象。问题在于它试图猜测日期的世纪。
当指定从01到31时,年份被解释为2000年代(21世纪),而32 t0 99被认为是1900年代(20世纪)。
SimpleDateFormat fm =new SimpleDateFormat("dd-MM-yy");
String datestr="21-11-31";
try {
Date date= fm.parse(datestr);
System.out.println(date);
} catch (ParseException e) {
}
谁能帮我?我该如何指定我只能整洁地工作在21世纪。我并没有完全尝试寻找根据条件处理字符串或更改日期之类的技巧。
最佳答案
您可以使用 set2DigitYearStart()
方法更改用于解释2位数据输入的世纪。
SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yy");
String aDate = "03/17/40";
Calendar cal = Calendar.getInstance();
cal.clear();
cal.set(Calendar.YEAR, 2000);
dateFormat.set2DigitYearStart(cal.getTime());
System.out.println(dateFormat.get2DigitYearStart());
System.out.println(dateFormat.parse(aDate));
将于2040年3月17日打印。
关于java - 如何使DateFormat猜测预期的世纪?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10732297/