正在从我的Date变量中删除时间



我有一个出生日期变量,它最初是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实例,并尝试打印它,该实例在内部调用DatetoString(),它具有固定格式

您可以使用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

相关内容

  • 没有找到相关文章

最新更新