我尝试将生日从String转换为Date以添加到arraylist联系人。然后从联系人中读取以显示生日。但是05/02/1990成为365/12/1990,66 / 12/1991成为365/12/1991(即DD和MM不正确)。非常感谢你的帮助!
ArrayList<Person> contacts = new ArrayList<Person>();
...
String firstName = sc.next();
String lastName = sc.next();
String email = sc.next();
String birthdayStr = sc.next();
SimpleDateFormat formatter = new SimpleDateFormat("DD/MM/YYYY");
try{
Date birthday = formatter.parse(birthdayStr);
Person s = new Person(firstName, lastName, email, birthday);
contacts.add(s);
Date b = s.getBirthday();
System.out.println(formatter.format(b));
}catch(ParseException e){
System.out.println( e.getMessage());
}
答案 0 :(得分:3)
D
是一年中的某一天,您需要每月的小写d
。也请使用小写y
。
new SimpleDateFormat("dd/MM/yyyy")
大写Y
的使用与week year:
周年与WEEK_OF_YEAR周期同步。第一周和最后一周(包括)之间的所有周都具有相同的周年值。因此,一周中的第一天和最后一天可能具有不同的日历年值。
例如,1998年1月1日是星期四。如果getFirstDayOfWeek()是MONDAY并且getMinimalDaysInFirstWeek()是4(ISO 8601标准兼容设置),那么1998年第1周将于1997年12月29日开始,并于1998年1月4日结束。过去三天的一周是1998年但是,如果getFirstDayOfWeek()是SUNDAY,则1998年第1周从1998年1月4日开始,到1998年1月10日结束; 1998年的前三天是1997年第53周的一部分,他们的一周是1997年。
为了避免这一年的“副作用”,可以使用小写y
。