SimpleDateFormat不起作用

时间:2013-04-17 18:48:53

标签: java

我正在尝试使用SimpleDateFormat做一些事情,但在我阅读Javadoc之后,我只会感到更加困惑。我想要两个方法,一个用于时区,一个用于当前时间和日期。我的格式应如下所示:

Time Zone: GMT +01:00
Time and Date: Wednesday 17/04/2013, 20:38:34

我一次从互联网上获取代码。这很好用:

    private String getFormattedTime() {
        Calendar cal = Calendar.getInstance();
        SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");        

        return sdf.format(cal.getTime());

    }

这将输出:20:41:34

现在我的其他格式,我尝试过这样的事情(我还没完成):

private static String getFormattedDate() {
    Calendar cal = Calendar.getInstance();
    SimpleDateFormat sdf = new SimpleDateFormat("EEEEEEEEE DD/MM/yyyy, HH:mm:ss");      

    return sdf.format(cal);

}

private static String getTimeZone() {
    Calendar cal = Calendar.getInstance();
    SimpleDateFormat sdf = new SimpleDateFormat("z");       

    return sdf.format(cal.getTimeZone());

}

如果您运行此代码,则会在第一行return处收到IllegalArgumentException。

似乎Javadocs没有提供任何关于如何使用它的例子。

1 个答案:

答案 0 :(得分:7)

SimpleDateFormat作用于日期,而不是日历。要转换,请使用.getTime(),因此您的代码应为:

private static String getFormattedDate() {
    Calendar cal = Calendar.getInstance();
    SimpleDateFormat sdf = new SimpleDateFormat("EEEEEEEEE dd:MM:yyyy, HH:mm:ss");      

    return sdf.format(cal.getTime());

}

private static String getTimeZone() {
    Calendar cal = Calendar.getInstance();
    SimpleDateFormat sdf = new SimpleDateFormat("z");       

    return sdf.format(cal.getTime());

}

但是,使用joda可能是一个更好的方法,因为我可以写博士论文。