我正在尝试使用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没有提供任何关于如何使用它的例子。
答案 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可能是一个更好的方法,因为我可以写博士论文。