【发布时间】:2018-05-25 11:44:51
【问题描述】:
我得到以下代码的错误输出。
class Test{
public static void main(String[] args) {
String dateStr = "May 11, 2019 11:35:34 AM";
SimpleDateFormat format = new SimpleDateFormat("MMM dd, YYYY HH:mm:ss a");
try{
Date d1 = format.parse(dateStr);
Calendar cal = Calendar.getInstance();
cal.setTime(d1);
System.out.println(cal.get(Calendar.YEAR));
System.out.println(Calendar.YEAR);
}catch (Exception e){
e.printStackTrace();
}
}
}
O/P
2018
预期的 O/P
2019
【问题讨论】:
-
使用
yyyy而不是YYYY -
我建议你避免使用
SimpleDateFormat类。它不仅过时了,而且出了名的麻烦。今天我们在java.time, the modern Java date and time API 的表现要好得多。 -
当我在我的计算机上运行您的代码时,
d1是 2018 年 12 月 31 日星期一 11:35:34 CET。大写YYYY是基于周的年份,仅对周数有用。缺少周数,SimpleDateFormat似乎选择了第 1 周的第一天。这恰好发生在 2018 年。
标签: java