SimpleDateFormat

时间:2015-04-27 11:59:38

标签: java date simpledateformat

我正在使用SimpleDateFormat处理日期格式。但是当我以提供格式格式化我的日期时,年份值增加1.条件发生在该值。为什么会这样?

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

输出如下:

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

年份值增加1.为什么会发生这种情况。

3 个答案:

答案 0 :(得分:6)

根据Oracle docs

资本Y表示周年,您应使用yyyy代替YYYY

SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-YYYY");更改为

SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");

答案 1 :(得分:3)

你应该使用SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy"); 因为y意味着一年,而且' Y'意味着一周。

以下是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

答案 2 :(得分:0)

尝试使用" yyyy"而不是" YYYY"。

有关详情,请参阅: SimpleDateFormat producing wrong date time when parsing "YYYY-MM-dd HH:mm"

  • Y表示"周年"
  • y表示" Calendar year"