SimpleDateFormat:String转换为Date,然后转换回String,Date更改

时间:2013-01-26 16:38:14

标签: java

我尝试将生日从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());
}

1 个答案:

答案 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