1

我正在尝试使用 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 似乎没有给出任何关于如何使用它的示例。

4

1 回答 1

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可能是更好的方法,因为我可以写一篇博士论文。

于 2013-04-17T18:54:36.960 回答