如何使用SimpleDateFormat解析字符串日期?

时间:2012-10-10 06:20:19

标签: java

我有以下代码:

    SimpleDateFormat format=new SimpleDateFormat("yyyy.MM.dd HH:mm");
    try {
            Date date=format.parse("2012.9.11 02:00");
                            Log.i("date", date.toGMTString());
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            Log.e("exception", e.getMessage());
        }

但我收到的消息是:“2012年9月10日22:00:00 GMT”,即错误的日期。我该如何解决?

5 个答案:

答案 0 :(得分:1)

IS 正确的日期。它是根据您的GMT偏移计算的。

要按照11-Sep-2012 02:00:00使用date.toLocaleString()(不建议使用的方法)

进行打印

或者您可以使用Calendar课程打印日期:

SimpleDateFormat format=new SimpleDateFormat("yyyy.MM.dd HH:mm");
Date date=format.parse("2012.09.11 02:00");
Calendar cal = Calendar.getInstance();
cal.setTime(date);
System.out.println(format.format(cal.getTime()));

打印:2012.09.11 02:00

您可以查看http://www.vogella.com/articles/JavaDateTimeAPI/article.html了解更多信息

答案 1 :(得分:0)

您正在打印date.toGMTString(),因此您将获得“10月2012 22:00:00 GMT”,这不是错误的字符串,而是格林威治标准时间的日期。请注意,toGMTString已弃用。

如果您想以格式打印日期,可以

 Log.i("date", format.format(date));

如果您不想获得补充“0”,请使用

format=new SimpleDateFormat("yyyy.M.d HH:mm");

答案 2 :(得分:0)

根据JavaDocdate.toGMTString()是不推荐使用的方法。

使用弃用方法并不是一种好习惯。

使用date.toString()代替date.toGMTString()

format.format(date);

答案 3 :(得分:0)

不推荐使用方法toGMTString()。 但是,至于解释,您可能处于不同的时区,因此具有不同的区域设置。 尝试使用date.toLocaleString()替换正确输出,尽管也是不推荐使用的方法。

答案 4 :(得分:0)

这是不正确的,因为您正在使用date.toGMTString()

尝试输出变量date,您就能看到正确的时间!