0

我有一个看起来像这样的代码:

Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2013-06-03 00:00:00");
        System.out.println(date);
        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Calendar cal = Calendar.getInstance();
        System.out.println("Current Date Time : " + dateFormat.format(cal.getTime()));

它输出:Mon Jun 03 00:00:00 EDT 2013 Current Date Time : 2013-06-24 12:52:04

我想将第一行打印的第一个日期更改为第二行打印的第二个日期。我怎样才能做到这一点?提前致谢。

4

5 回答 5

5

您不能影响该Date#toString方法的作用(除非您愿意子类化Date,不建议这样做)。简单地说,不要依赖Date#toString——这就是SimpleDateFormat目的。

于 2013-06-24T16:57:01.190 回答
2

好了,可以看到对象的toString方法了Date!您将看到toString输出Date对象的格式如下:

EEE MMM dd HH:mm:ss zzz yyyy

这就是为什么DateFormat要格式化Date对象,以满足我们的格式化需求为我们的愿望!

于 2013-06-24T17:08:22.810 回答
1

我认为您让自己感到困惑,因为您正在使用指定掩码来创建日期SimpleDateFormat#parse,并且在打印后它没有被“保留”,对吧?

关键是:无论你如何创建一个Date对象,当你打印它时它总是会使用它的默认掩码——就像Mon Jun 03 00:00:00 EDT 2013.

如果你想改变它的打印方式,你可以使用 a SimpleDateFormat,就像你在你的帖子中所做的那样:

DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = dateFormat.parse("2013-06-03 00:00:00");
dateFormat.format(date);

只是要清楚一点:SimpleDateFormat 不会date以任何方式更改对象。它的目的只是格式化和解析日期对象。

于 2013-06-24T17:07:56.917 回答
0

也使用相同DateFormat的方法打印第一个Date对象。

System.out.println(dateFormat.format(date));

如何,println()打印出Date对象取决于如何Date.toString()实现。Date除非您扩展和覆盖显然不是正确方法的类,否则您无法更改格式。

    DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Date date = dateFormat.parse("2013-06-03 00:00:00");

    System.out.println(date); // formats as: EEE MMM dd HH:mm:ss zzz yyyy

    System.out.println(dateFormat.format(date));
    System.out.println("Current Date Time: " +
                       dateFormat.format(Calendar.getInstance().getTime()));
于 2013-06-24T17:01:01.440 回答
0

好吧,把两者结合起来,不是吗?

System.out.println(dateFormat.format(date));
于 2013-06-24T17:01:43.657 回答