SimpleDateFormat不起作用

Cre*_*r13 1 java

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

Time Zone: GMT +01:00
Time and Date: Wednesday 17/04/2013, 20:38:34
Run Code Online (Sandbox Code Playgroud)

我一次从互联网上获取代码.这工作得很好:

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

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

    }
Run Code Online (Sandbox Code Playgroud)

这将输出: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());

}
Run Code Online (Sandbox Code Playgroud)

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

似乎Javadocs没有给出如何使用它的任何示例.

hd1*_*hd1 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());

}
Run Code Online (Sandbox Code Playgroud)

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