2010-06-16 68 views
17

下面的代码将解析日期命名为“Wed Jan 13 00:00:00 EST 2010” ,而不是“Wed Jun 13 00:00:00 EST 2010”。任何想法非常赞赏。SimpleDateFormat在解析时忽略月份

SimpleDateFormat sf = new SimpleDateFormat("yyyy-mm-dd'T'HH:mm:ss"); 

    String str = "2010-06-13T00:00:00"; 

    Date date = sf.parse(str); 

    System.out.println(" Date " + date.toString()); 
+4

请注意,您有'mm'两次,一次为一个月,一次为分钟。 – ColinD 2010-06-16 19:58:30

回答

49

尝试:

"yyyy-MM-dd'T'HH:mm:ss" 

MM意味着一个月。 mm表示分钟。有关支持的日期和时间模式的更多详细信息,请参阅SimpleDateFormat的文档。

+0

谢谢你,我明白了。 – manu 2010-06-16 20:00:42

+2

欢迎来到SO,@manu!这听起来像你认为这是正确的答案。您可以点击上方和该评论左侧的复选标记轮廓,将其标记为已接受的答案。这有助于其他人看到问题已经得到解答,给答案员+15代表并给你+2代表! – Pops 2010-06-16 20:17:38

+2

@manu - “想出来”?或者阅读ColinD的评论? – duffymo 2010-06-17 01:11:57

4

问题是,您使用“mm”作为月份,“mm”代表分钟。 以下是所有可用的日期格式,请参阅doc here

Symbol Meaning    Kind   Example 
D  day in year    Number  189 
E  day of week    Text   E/EE/EEE:Tue, EEEE:Tuesday, EEEEE:T 
F  day of week in month Number  2 (2nd Wed in July) 
G  era designator   Text   AD 
H  hour in day (0-23)  Number  0 
K  hour in am/pm (0-11) Number  0 
L  stand-alone month  Text   L:1 LL:01 LLL:Jan LLLL:January LLLLL:J 
M  month in year   Text   M:1 MM:01 MMM:Jan MMMM:January MMMMM:J 
S  fractional seconds  Number  978 
W  week in month   Number  2 
Z  time zone (RFC 822)  Time Zone  Z/ZZ/ZZZ:-0800 ZZZZ:GMT-08:00 ZZZZZ:-08:00 
a  am/pm marker   Text   PM 
c  stand-alone day of week Text   c/cc/ccc:Tue, cccc:Tuesday, ccccc:T 
d  day in month   Number  10 
h  hour in am/pm (1-12) Number  12 
k  hour in day (1-24)  Number  24 
m  minute in hour   Number  30 
s  second in minute  Number  55 
w  week in year   Number  27 
G  era designator   Text   AD 
y  year     Number  yy:10 y/yyy/yyyy:2010 
z  time zone    Time Zone  z/zz/zzz:PST zzzz:Pacific Standard 
0

例子,如果日期是06 07 2016

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

您可以使用逗号,句号,斜线,或这些格式之间的连字符。

Ex: dd-mm-yyyy, it will display like(06-07-2016) 
dd/mm/yyyy,it will display like(06/07/2016) 
dd.mm.yyyy,it will display like(06.07.2016) 
dd,mm,yyyy ,it will display like(06,07,2016) 

MM - will display number of the Month. 
MMM - will display Month Three character only(Ex: Jul) 
MMMM - will display full month(Ex: July) 

yyyy - will display full year(2016) 
yy - will display last two digits(16) 

hh - will display hours 
mm -will display minutes 
ss - will display seconds 
a - will display AM or PM 

Ex: if time is 12:09:10 PM means (hh:mm:ss a) 

EEE- will display short week name(Ex: Wed) 
EEEE- will display full week name(Ex: Wednesday)