-1

I am working on date format with SimpleDateFormat. But when I format my date in provide format, year value increment by 1.The condition happen with that value. Why this happen?

SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-YYYY");
System.out.println("dob - "+date); // Java date
System.out.println("formatted date - "+sdf.format(date));

Output as follows :

dob - Sun Dec 28 00:00:00 IST 1975
formatted date - 28-12-1976

Year value increment by 1. Why this happen.

Jordi Castilla
  • 26,609
  • 8
  • 70
  • 109
Anshul Parashar
  • 3,096
  • 4
  • 30
  • 56

3 Answers3

6

As per Oracle docs

capital Y means week year,you should use yyyy in place of YYYY

change SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-YYYY"); to

SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
SpringLearner
  • 13,738
  • 20
  • 78
  • 116
3

You should use SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy"); as y means year while 'Y' means week Year.

Below are supported codes to be used in SimpleDateFormat.

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
Shirishkumar Bari
  • 2,692
  • 1
  • 28
  • 36
0

Try to use "yyyy" instead of "YYYY".

See for more info: SimpleDateFormat producing wrong date time when parsing "YYYY-MM-dd HH:mm"

  • Y means "Week year"
  • y means "Calendar year"
Community
  • 1
  • 1
DangeMask
  • 531
  • 4
  • 19