我有一个出生日期变量,它最初是int类型。然后它被解析为String((,并使用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日星期六欧洲中部时间1999 00:00:00[我想删除粗体时间]
非常感谢你的帮助!
解决方案:
public String getDob(){
Date newDate = new Date(this.dob);
String date = new SimpleDateFormat("E MMM dd").format(newDate);
return date;
}
不能更改Date
类的toString()
方法,
您正在做的是将一些String解析为Date并返回Date实例,并尝试打印它,该实例在内部调用Date
的toString()
,它具有固定格式
您可以使用format()
方法将Date
转换为String
,并以您想要的任何格式打印
java.util.Date对象根据定义同时具有日期部分和时间部分。
日期时间!=字符串
请理解日期-时间对象是而不是字符串。我们创建日期-时间对象中包含的日期-时间值的String表示,但这样做是生成一个完全独立于日期-时间的新String对象。
本地日期
如果您只想要一个日期,而不想要一天中的时间,请使用Joda time和java 8中新的java.time包中的LocalDate类(灵感来自Joda time(。
Joda时间
默认情况下,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 );
试试这个
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