Java SimpleDateFormat с шаблоном "MM / DD / yyyy" выдает неожиданное значение даты - PullRequest
2 голосов
/ 09 марта 2012

Я пытаюсь создать объект Date из входной строки.Фрагмент кода, который я написал:

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));

Вывод, который я получаю:

eff Date: 03/09/2012
Effective Date = 01/09/2012

То же самое происходит и для других входных данных.как

exp date: 08/31/2012
Expiry Date = 01/31/2012

Кто-нибудь знает причину, по которой он меняет значение месяца с чего-либо (03/08) на 01 ??Информация: я использую jdk1.6 с Eclipse.И запуск этого примера программы через JUNIT 4.

Ответы [ 2 ]

10 голосов
/ 09 марта 2012

new SimpleDateFormat("MM/DD/yyyy"); должно быть new SimpleDateFormat("MM/dd/yyyy"); (dd вместо DD)

  • DD = День в году
  • dd = день в месяце
9 голосов
/ 09 марта 2012

Вы хотите dd, а не DD.Капитал D составляет день в году .

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
...