我的出生日期变量最初是int类型。然后将其解析为toString()并使用simpleDateFormat解析为Date。
唯一的问题是它不断返回它的默认时间,包括日期。
public Date getDob(){
String format = Integer.toString(this.dob);
try{
date = new SimpleDateFormat("ddMMyyyy").parse(format);
}catch(ParseException e){
return null;
}
return date;
}
返回:1月16日星期六 00:00:00 CET 1999 [我想删除大胆的时间]
非常感谢你的帮助!
解决方案:
public String getDob(){
Date newDate = new Date(this.dob);
String date = new SimpleDateFormat("E MMM dd").format(newDate);
return date;
}
答案 0 :(得分:4)
您无法更改toString()
类的Date
方法,
你正在做的是你正在解析一些String to Date并返回Date实例并尝试打印它,内部调用toString()
Date
并且它具有固定格式,
您可以使用format()
方法将Date
转换为String
并以您想要的任何格式打印
答案 1 :(得分:1)
试试这个
Date originalDate = new Date();
long timeInMills = originalDate.getTime();
Date newDate = new Date(timeInMills);
String date = new SimpleDateFormat("E MMM dd").format(newDate);
System.out.println(date);
输出:
Wed Apr 30
如果您想在需要时以较长(以毫秒为单位)存储日期。
有关更多模式,请查看SimpleDateFormat
答案 2 :(得分:1)
根据定义,java.util.Date对象具有日期部分和时间部分。
了解日期时间对象不是字符串。我们创建日期时间对象中包含的日期时间值的字符串表示,但这样做会生成一个完全独立于日期时间对象的新String对象。
如果您只想要一个没有时间概念的日期,请使用Joda-Time中的LocalDate类和Java 8中的新java.time package(受Joda-Time启发)
默认情况下,Joda-Time使用ISO 8601标准格式。如果您想要其他格式的字符串,请浏览DateTimeFormat类(DateTimeFormatters的工厂)。
Joda-Time 2.3中的示例代码。
String input = "01021903"; // First of February, 1903.
DateTimeFormatter formatter = DateTimeFormat.forPattern( "ddMMyyyy" );
LocalDate dateOfBirth = formatter.parseLocalDate( input );
String outputStandard = dateOfBirth.toString(); // By default, the ISO 8601 format is used.
String outputCustom = formatter.print( dateOfBirth );