我正在尝试将“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/

10-10 04:35