Java 从我的日期变量中删除时间

Java 从我的日期变量中删除时间,java,date,datetime,Java,Date,Datetime,我有我的Date of Birth变量,它最初的类型是int。然后它被解析为String()并用SimpleDataFormat解析为Date 唯一的问题是它不断返回默认时间,包括日期 public Date getDob(){ String format = Integer.toString(this.dob); try{ date = new SimpleDateFormat("ddMMyyyy").parse(format); }catch(Pars

我有我的Date of Birth变量,它最初的类型是int。然后它被解析为String()并用SimpleDataFormat解析为Date

唯一的问题是它不断返回默认时间,包括日期

public Date getDob(){
    String format = Integer.toString(this.dob);
    try{
        date = new SimpleDateFormat("ddMMyyyy").parse(format);
    }catch(ParseException e){
        return null;
    }
    return date;
}
返回:1999年1月16日星期六00:00:00 CET[我想删除粗体时间]

非常感谢你的帮助

解决方案:

public String getDob(){
    Date newDate = new Date(this.dob);
    String date = new SimpleDateFormat("E MMM dd").format(newDate);
    return date;
}

不能更改
Date
类的
toString()
方法

您所做的是解析某个字符串到Date并返回Date实例,并尝试打印它,该实例在内部调用
Date
toString()
,并且具有固定格式


您可以使用
format()
方法将
Date
转换为
String
,并以您想要的任何格式打印它您不能更改
toString()
方法的
Date

您所做的是解析某个字符串到Date并返回Date实例,并尝试打印它,该实例在内部调用
Date
toString()
,并且具有固定格式

您可以使用
format()
方法将
Date
转换为
String
,并以您想要的任何格式打印它

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
如果需要,以长(毫秒)为单位存储日期

要了解更多图案,请查看此图案

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
如果需要,以长(毫秒)为单位存储日期


有关更多模式,请查看

java.util.Date对象的定义既有日期部分,也有时间部分

日期时间!=一串 理解日期时间对象不是字符串。我们创建日期时间对象中包含的日期时间值的字符串表示,但这样做会生成一个与日期时间对象完全分离的新字符串对象

本地日期 如果您只需要一个日期,而不需要一天中的时间概念,那么可以使用LocalDate类,该类可以在Java 8中找到,也可以在Java 8中找到(受Joda time的启发)

乔达时间 默认情况下,Joda Time使用标准格式。如果需要其他格式的字符串,请浏览该类(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 );

根据定义,java.util.Date对象既有日期部分,也有时间部分

日期时间!=一串 理解日期时间对象不是字符串。我们创建日期时间对象中包含的日期时间值的字符串表示,但这样做会生成一个与日期时间对象完全分离的新字符串对象

本地日期 如果您只需要一个日期,而不需要一天中的时间概念,那么可以使用LocalDate类,该类可以在Java 8中找到,也可以在Java 8中找到(受Joda time的启发)

乔达时间 默认情况下,Joda Time使用标准格式。如果需要其他格式的字符串,请浏览该类(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 );


format
的值是多少?解析dob变量后,String format=“16011999”1999年1月16日格式的值是多少?解析dob变量后,String format=“16011999”1999年1月16日更好的解决方案:使用Joda Time或java.Time,两者都有一个表示“只是一个日期”的类型那我该怎么做呢?为了让您了解情况,我正在设计一个非常基本的数据库。学生构造函数包含int-dob参数,该参数被解析为字符串,然后在Data类型的date变量中格式化。只需将输入解析为date,并在希望以漂亮格式显示它的地方,使用SimpleDataFormat#format()我设法解决了这个问题,现在就编辑原始帖子:-)谢谢大家这是我上面的评论告诉大家的:)更好的解决方案:使用Joda Time或java.Time,两者都有一个表示“just a date”的类型,那么我应该怎么做呢?为了让您了解情况,我正在设计一个非常基本的数据库。学生构造函数包含int-dob参数,该参数被解析为字符串,然后在Data类型的date变量中格式化。只需将输入解析为date,并在希望以漂亮格式显示它的地方,使用SimpleDataFormat#format()我设法解决了这个问题,现在就编辑原帖:-)谢谢大家这就是我上面的评论告诉大家的:)我不完全确定这是否有效。基本上,dob指的是我的对象的构造函数中使用的出生日期,从我读到的这个给出当前日期?好的,我会试试这个!一会儿就回来了:)它工作得很好!然而,我可以用Joda Time输出的格式似乎要整洁得多。例如1996/09/02,这正是我想要的!你的代码也运行得很好:)@Booch不用担心,只要问一下就可以了。我不完全确定这是否有效。基本上,dob指的是我的对象的构造函数中使用的出生日期,从我读到的这个给出当前日期?好的,我会试试这个!一会儿就回来了:)它工作得很好!然而,我可以用Joda Time输出的格式似乎要整洁得多。例如1996/09/02,这正是我想要的!你的代码也很好:)@Booch不用担心,只要问一下就可以了。谢谢Basil,很抱歉回复太晚了。试试这个,然后回答!我想说一声非常感谢巴兹尔,我被告知要利用乔达的时间,但这确实让我有点困惑。你的例子真的很有帮助,并且让它工作得很好!祝你愉快day@Booch是的,在乔达的时间里有一点学习曲线。如果你做任何约会时间的工作,那么你的努力是值得的。要找到许多例子来快速展平曲线。再次感谢巴兹尔:-)谢谢巴兹尔,很抱歉回复太晚。试试这个,然后回答!我想说一声非常感谢巴兹尔,我被告知要利用乔达的时间,但这确实让我有点困惑。你的例子真的很有帮助,并且让它工作得很好!祝你愉快day@Booch对