具有模式"MM/DD/yyyy"的Java SimpleDateFormat会产生意外的日期值

Swa*_*ika 2 java date simpledateformat date-formatting

我试图从输入字符串创建一个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));
Run Code Online (Sandbox Code Playgroud)

我得到的输出是:

eff Date: 03/09/2012
Effective Date = 01/09/2012
Run Code Online (Sandbox Code Playgroud)

对于其他输入也是如此.喜欢

exp date: 08/31/2012
Expiry Date = 01/31/2012
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么它将月份值从任何东西(03/08)改为01?信息:我在Eclipse中使用jdk1.6.并通过JUNIT 4运行此示例程序.

Kri*_*ols 10

new SimpleDateFormat("MM/DD/yyyy");应该new SimpleDateFormat("MM/dd/yyyy");(dd而不是DD)

  • DD =一年中的一天
  • dd =一个月的日子


JRL*_*JRL 9

你想要的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
Run Code Online (Sandbox Code Playgroud)