Reputation: 3436
I am trying to create a Date object from an input String. The code snippet that I have written is :
inputs are like : effDate = "03/09/2012" and ExpiryDate = "08/31/2012"
System.out.println("eff Date: " + effDate);
SimpleDateFormat formatter = new SimpleDateFormat("MM/DD/yyyy");
Date date = formatter.parse(effDate);
System.out.println("Effective Date = " + formatter.format(date));
The output I get is :
eff Date: 03/09/2012
Effective Date = 01/09/2012
The same happens for the other input as well. like
exp date: 08/31/2012
Expiry Date = 01/31/2012
Does anyone know the reason why its changing the month value from anything(03/08) to 01 ?? Info: I am using jdk1.6 with Eclipse. And running this sample program through JUNIT 4.
Upvotes: 2
Views: 2541
Reputation: 3557
new SimpleDateFormat("MM/DD/yyyy");
should be new SimpleDateFormat("MM/dd/yyyy");
(dd
instead of DD
)
DD
= Day in yeardd
= Day in monthUpvotes: 10
Reputation: 78003
You want dd
, not DD
. Capital D is day in year.
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 Number 1
(1 = Monday, ..., 7 = Sunday)
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
Z Time zone RFC 822 time zone -0800
X Time zone ISO 8601 time zone -08; -0800; -08:00
Upvotes: 9