java - SimpleDateFormat 不起作用

标签 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 没有给出任何关于如何使用它的示例。

最佳答案

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

关于java - SimpleDateFormat 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16067790/

相关文章:

JAVA JTextField 不显示

java - 如何在构造函数接受类的情况下使用 Guice `Module` 进行注入(inject)?

Java包: no class def found

java - tomcat相对路径设置

java - JFrame repaint() 和 revalidate() 仅在 Mac 操作系统上调整窗口大小时更新

java - 如何递归搜索文件(我的自定义代码)?

java - 引用用于转换的 java 基本类型

java - Spring Boot App - 无法解析占位符

java - 陷入 while (true) 循环内。如何在线程中隔离它?

java - 参数化测试: Collection not read by JUnit?