Is SimpleDateFormat in Java work incorrect or I did any mistake? See code sample [duplicate]

I use Java and compile this code using sdk 7. Console show:

input=2010/03/30

output=2010/12/28

public static void main(String[] args) {
    SimpleDateFormat format = new SimpleDateFormat("YYYY/MM/dd");
    String inputDateStr = "2010/03/30";
    try {
        Date date = format.parse(inputDateStr);
        String result = format.format(date);
        System.out.println("input=" + inputDateStr);
        System.out.println("output=" + result);
    } catch (ParseException e) {
        e.printStackTrace();
    }
}

Solution 1:

As for documentation https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html uppercase D stands for the day number in a year, if you want day number in a month you should use lowercase d.

The same for YYYY and yyyy:

Letter  Date or Time Component  Presentation    Examples
G   Era designator  Text    AD
y   Year    Year    1996; 96
Y   Week year   Year    2009; 09
M   Month in year   Month   July; Jul; 07
w   Week in year    Number  27
W   Week in month   Number  2
D   Day in year Number  189
d   Day in month    Number  10
F   Day of week in month    Number  2
E   Day name in week    Text    Tuesday; Tue
u   Day number of week (1 = Monday, ..., 7 = Sunday)    Number  1
a   Am/pm marker    Text    PM
H   Hour in day (0-23)  Number  0
k   Hour in day (1-24)  Number  24
K   Hour in am/pm (0-11)    Number  0
h   Hour in am/pm (1-12)    Number  12
m   Minute in hour  Number  30
s   Second in minute    Number  55
S   Millisecond Number  978
z   Time zone   General time zone   Pacific Standard Time; PST; GMT-08:00
Z   Time zone   RFC 822 time zone   -0800
X   Time zone   ISO 8601 time zone  -08; -0800; -08:00

Solution 2:

yyyy/MM/dd

As the link shows, YYYY gives the week year, the first day of the next year could be in week year of this year, in week 52. Or such. DD is day in year, like 350.

The new date/time classes would be better to use.