java - 如何让 DateFormat 猜想世纪?

标签 java datetime

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

相关文章:

javascript - 当 MongoDB 插入日期时,它会将其转换为 UTC

firebase - Firestore Timestamp.toDate() 以 UTC 返回日期

java - 如何将 Struts2 datetimepicker 值转换为 SQL 日期时间,以便将其保存到 SQL 表中

java - eclipse RCP : How and when to correctly unsubscribe a Composite from EventBroker?

java - Java中初始化可变Set的便捷方法

java - 表单中的用户名始终为空

java - 如何在 selenium java 中捕获和导航 <a> 和 <span> 标签下的元素

python - 重新采样时间序列并显示一天中的时间

html - 浏览器是否需要为日期时间输入检测用户时区?

java - 如何将属性占位符传递给 YAML 配置文件中的注释?