我想用名字显示月份。所以我正在使用JODA.jar
这是我的代码:
public static void main(String[] args) {
String date1 = "2013-21-01 14:00:00";
String date2 = "2013-01-01 14:00:00";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.ENGLISH);
Date date11, date22;
try {
date11 = sdf.parse(date1);
System.out.println("Date : " +date11);
date22 = sdf.parse(date2);
System.out.println("Date : " +date22);
DateTime dt1 = new DateTime(date11);
String monthName1 = dt1.monthOfYear().getAsText(Locale.ENGLISH);
DateTime dt2 = new DateTime(date22);
String monthName2 = dt2.monthOfYear().getAsText(Locale.ENGLISH);
System.out.println("String1 : " +monthName1+" "+dt1.getYear());
System.out.println("String2 : " +monthName2+" "+dt2.getYear());
}
catch (ParseException e) {
e.printStackTrace();
}
}
在第一次约会时,我就像月份一样放了21,这是不可能的。但我在控制台中有这个:
Date : Mon Sep 01 14:00:00 GMT+01:00 2014
Date : Tue Jan 01 14:00:00 GMT+01:00 2013
String1 : September 2014
String2 : January 2013
怎么会这样?通常它不应该显示第一个日期,只是正确的日期,对吧?
答案 0 :(得分:6)
答案 1 :(得分:1)
Java日期解析称为lenient
- 它允许解析技术上无效的日期,并确定用户可能引用的内容。
在这个特殊情况下,它出现在2013年第21个月,假设用户在增加月份时处于懒惰状态,并将其视为2014年9月份的9月份。
可以找到有关宽大处理的更多信息in the Java documentation。
答案 2 :(得分:0)
21是12 + 9所以输入这个就是你想要实际设置的日期加1年。