以下代码的输出错误。
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
答案 0 :(得分:6)
您应该使用小写y
,如下所示:
SimpleDateFormat format = new SimpleDateFormat("MMM dd, yyyy HH:mm:ss a");
请注意,大写/小写更改结果
| Letter | Date/Time component | | y | Year | | Y | Week year | | m | Minute | | M | Month in year |
答案 1 :(得分:1)
日历有两种类型。 ISO周日和其他一个格里高利。 ISO周日期有52或53个整周,这意味着它不会有正常的365/366天,因为我们知道基于闰年与否,但365/371天(365 + 1周)。 yyyy是我们所知道的正常日历年。
或者,您可以使用GregorianCalendar代替日历,如下所示,以获得YYYY或yyyy的相同结果 -
GregorianCalendar gregcal = new GregorianCalendar();
gregcal.setTime(d1);
System.out.println(gregcal.getWeekYear());