-2

我正在尝试将生日从字符串转换为日期,以便添加到数组列表联系人中。然后从联系人中读取以显示生日。但是 05/02/1990 变为 365/12/1990,06/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());
}
4

1 回答 1

3

D是一年中的一天,您需要小写d月份的一天。也使用小写y

new SimpleDateFormat("dd/MM/yyyy")

大写的使用与Y周年有关

一周年与 WEEK_OF_YEAR 周期同步。第一周和最后一周(含)之间的所有周都具有相同的周年值。因此,一周年的第一天和最后一天可能具有不同的日历年值。

例如,1998 年 1 月 1 日是星期四。如果 getFirstDayOfWeek() 为 MONDAY 且 getMinimalDaysInFirstWeek() 为 4(ISO 8601 标准兼容设置),则 1998 年的第 1 周从 1997 年 12 月 29 日开始,到 1998 年 1 月 4 日结束。最后三天的一周年份为 1998 年1997 日历年。但是,如果 getFirstDayOfWeek() 是 SUNDAY,则 1998 年的第 1 周从 1998 年 1 月 4 日开始,到 1998 年 1 月 10 日结束;1998 年的前三天是 1997 年第 53 周的一部分,他们的周年是 1997 年。

为了避免对年份的这种“副作用”,y可以使用小写字母。

于 2013-01-26T16:40:30.680 回答