我想在Java中获得格式化的日期
我想获得一个应用了SimpleDateFormat
的新Date
对象。 我想做的事情如下:
SimpleDateFormat myFormat = new SimpleDateFormat("dd MMM yyyy kkmm"); Date today = new Date(); today = myFormat.format(today);
我不能这样做,因为今天是Date
, format
返回一个String
。 我也尝试过:
Date today; SimpleDateFormat myFormat = new SimpleDateFormat("dd MMM yyyy kkmm"); try{ today = myFormat.parse((new Date()).toString()); }catch(Exception e){ }
这不是一个好的解决方案,因为当我今天尝试在其他地方使用时,Java抱怨今天可能没有被实例化。 有什么改变Date对象格式的好方法(同时仍然保持Date对象,而不是将其转换为字符串)?
您正在错误地查看格式和日期。
- 日期不包含格式。 日期只是一个包含日期,月份,小时,秒等日期信息的类。
- SimpleDateFormat是告诉你Date的字符串表示的那个。 但没有与之相关的日期。
因此,想法是当您必须显示日期或必须以某种字符串表示forms存储日期时,您将使用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();
还有像JodaTime这样的其他好的解决方案
参考:
GregorianCalendar 日历 Joda时间
我认为你想要实现的目标没有意义。
Date
对象表示时间。 你不能格式化它。 但是,您可以以特定格式获取字符串表示forms。 和myFormat.format(today)
。
我认为你在这里误解了Date
对象是什么。 Date
只是保存有关某个时间点的信息 – 它根本没有格式。 当涉及到Date
的String
表示时,这就是格式化的用武之地。 只有在以下情况下才会担心格式化:
- 将
String
表示解析为Date
对象。 - 将
Date
转换回String
表示forms以某种方式显示它。
你的问题没有意义。 按定义格式化日期意味着使用特定格式将其转换为字符串。 Date
对象可以保留为Date
对象。 只是在您希望将其转换为需要进行任何格式化的String
。
您不能将格式与Date对象关联,而只能在显示或其他活动时应用格式,
在Date对象本身中进行所有处理并在单独显示时更改为所需的格式,