我想在Java中获得格式化的日期

Bou*_*ess 1 java date simpledateformat

我想获得Date一个SimpleDateFormat应用它的新对象.我想做的事情如下:

SimpleDateFormat myFormat = new SimpleDateFormat("dd MMM yyyy kkmm");
Date today = new Date();
today = myFormat.format(today);
Run Code Online (Sandbox Code Playgroud)

我不能这样做,因为今天是一个Date,并format返回一个String.我也尝试过:

Date today;
SimpleDateFormat myFormat = new SimpleDateFormat("dd MMM yyyy kkmm");
try{
    today = myFormat.parse((new Date()).toString());
}catch(Exception e){

}
Run Code Online (Sandbox Code Playgroud)

这不是一个好的解决方案,因为当我今天尝试在其他地方使用时,Java抱怨今天可能没有实例化.有什么改变Date对象格式的好方法(同时仍然保持Date对象,而不是将其转换为字符串)?

hav*_*exz 5

您正在错误地查看格式和日期.

  • 日期不包含格式.日期只是一个包含日期,月份,小时,秒等日期信息的类.
  • SimpleDateFormat是告诉你Date的字符串表示的那个.但没有与之相关的日期.

因此,想法是当您必须显示日期或必须以某种字符串表示形式存储日期时,您将使用SimpleDateFormat并将其传递给您希望字符串表示的日期.

这样做的一个好处是,我可以使用相同的Date对象,并可以显示两个不同的字符串表示(使用两个不同的SimpleDateFormat实例).而且反之,定义了一个SimpleDateFormat实例,我可以格式化多个日期.

编辑:

现在,如果您想从日期中删除一些信息.使用

Calendar rightNow = Calendar.getInstance();
Calendar cal = new GregorianCalendar(
   rightNow.get(YEAR),
   rightNow.get(MONTH),
   rightNow.get(DAY_OF_MONTH));
Date now = cal.getTime();
Run Code Online (Sandbox Code Playgroud)

还有像JodaTime这样的其他好的解决方案

参考:

GregorianCalendar 日历 Joda时间