将String转换为(yyyy-MM-dd)格式的java.util.Date,返回类型为Date

时间:2016-02-10 11:58:12

标签: java string date simpledateformat

我试图以这种方式将String转换为java.util.date,

我的输入字符串是:" 2013-09-18"

import java.text.SimpleDateFormat;
import java.util.Date;

public class DateAndTime {

    public static void main(String[] args) throws Exception {

            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            Date convertedCurrentDate = sdf.parse("2013-09-18");
            String strDate = new SimpleDateFormat("yyyy-MM-dd").format(convertedCurrentDate);
            System.out.println(strDate);

     }
}

这里的conversionCurrentDate输出为"" Wed Sep 18 00:00:00 IST 2013""。

其实我想以这种方式获得输出,2013-09-18而不是"" Wed Sep 18 00:00:00 IST 2013""

所以,我试过这种方式,

String strDate = new SimpleDateFormat("yyyy-MM-dd").format(convertedCurrentDate);
            System.out.println(strDate);

这让我的输出为2013-09-18。

但问题是我得到的这个' 2013-09-18'作为字符串。

我想要的是2013-09-18的java.util.date数据类型而不是String

即,

need to cast strDate to java.util.date.

有谁可以帮我解决这个问题?

由于

3 个答案:

答案 0 :(得分:1)

<强>原因:
当使用println时,java在该对象上显式调用toString方法。在Date对象上调用toString时,它可能正在使用其默认日期格式,这会导致上面的输出。

<强>解决方案: 为了打印目的,做你正在做的事情

String strDate = new SimpleDateFormat("yyyy-MM-dd").format(convertedCurrentDate);  
System.out.println(strDate);

答案 1 :(得分:1)

在Date对象上调用System.out.println时,将打印该对象的String表示形式。这是通过调用相应Date对象的方法toString()来完成的。 Date对象的String表示由该类的实现者预定义,因此您将始终获得类似&#34; Wed Sep 18 00:00:00 IST 2013&#34;

的格式

您应该始终在Date对象上调用以下内容,以便以您希望的格式打印它:

new SimpleDateFormat("yyyy-MM-dd").format(dateObject)

为了让您的生活更轻松,请创建Date格式化程序的静态对象,并在代码中的任何位置调用它,如:

public static SimpleDateFormat MY_DATE_FORMATTER=  new SimpleDateFormat("yyyy-MM-dd");

并称之为:

System.out.println(MY_DATE_FORMATTER.format(dateObject));

答案 2 :(得分:0)

Java不允许日期格式只是日期部分,每当你创建一个日期对象时,它应该包含时间部分,即使它不在那里它被写为00:00。所以你不能有格式化的日期对象但你总能得到格式化的字符串。