SimpleDateFormat解析DTG格式

时间:2011-10-06 15:01:37

标签: simpledateformat

我对SimpleDateFormat对象感到困惑。这是代码:

SimpleDateFormat formatter = new SimpleDateFormat("DDHHmm MMM yy", Locale.ENGLISH);

String dateString = "312230 MAR 10";
try 
{
    Date date = (Date)formatter.parse(dateString);
    System.out.println("Original string: " + dateString);
    System.out.println("Parsed date    : " + date.toString());
}
catch (ParseException e) 
{
    System.out.println("ERROR: could not parse date in string \"" +
                dateString + "\"");
}

这是输出:

Original string: 312230 MAR 10
Parsed date    : Sun Jan 31 22:30:00 EST 2010

我真的希望输出为

Parsed date    : Wed Mar 31 22:30:00 EST 2010

有人可以指出我做错了什么吗?我们将深表感谢。我使用的是java 1.6_27。

2 个答案:

答案 0 :(得分:2)

将simpleDateFormat模式更改为“ddHHmm MMM yy”返回预期输出

Original string: 312230 MAR 10
Parsed date    : Wed Mar 31 22:30:00 CEST 2010

大写的DD表示一年中的某一天。在你的例子中,31日是1月,你的输出如何,而不是3月

答案 1 :(得分:0)

在SimpleDateFormat中:

D 代表一年中的一天。例如-31作为DD的价值将给你从1月1日起的第31天。从1月1日开始的一年中的第31天将是1月31日

d 表示以月为单位的日期。例如,如果给出31作为dd的值,并且MMM是MAR,那么它将是5月31日。

更多SimpledateFormat