我试图以这种方式将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.
有谁可以帮我解决这个问题?
由于
答案 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。所以你不能有格式化的日期对象但你总能得到格式化的字符串。