java中的时间转换

java中的时间转换,java,datetime,time,datetime-conversion,Java,Datetime,Time,Datetime Conversion,我有一个如下代码: 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

我有一个如下代码:

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()));
它输出: 2013年6月3日星期一美国东部夏令时00:00:00 当前日期时间:2013-06-24 12:52:04


我想将第一行中打印的第一个日期更改为第二行中打印的第二个日期。我该怎么做?提前谢谢

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

使用相同的
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()));

把两者结合起来,不是吗

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

我觉得你很迷惑自己,因为你正在使用
SimpleDateFormat#parse
指定一个掩码来创建一个日期,并且在打印后它不会被“保留”,对吗

要点是:无论您如何创建一个
日期
对象,当您打印它时,它将始终使用它的默认掩码-这类似于
2013年6月3日周一00:00:00美国东部夏令时

如果要更改打印方式,可以使用
SimpleDataFormat
,就像您在文章中所做的那样:

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

需要明确的是:SimpleDataFormat不会以任何方式更改
date
对象。它的目的只是格式化和解析日期对象。

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

EEE MMM dd HH:mm:ss zzz yyyy

这就是为什么
DateFormat
加入派对来格式化
Date
对象,以满足我们的需求,按照我们的意愿格式化它

或者使用JodaTime,您可以使用类似于
DateTime.now().toString(“yyyy-MM-dd”)
的方法进行格式化。