我想要一个Java格式的日期

我想要一个Java格式的日期,java,date,simpledateformat,Java,Date,Simpledateformat,我想获得一个新的Date对象,该对象应用了SimpleDateFormat。我想做一些类似的事情: SimpleDateFormat myFormat = new SimpleDateFormat("dd MMM yyyy kkmm"); Date today = new Date(); today = myFormat.format(today); 我不能这样做,因为今天是日期,而格式返回一个字符串。我也尝试过: Date today; SimpleDateFormat myFormat =

我想获得一个新的
Date
对象,该对象应用了
SimpleDateFormat
。我想做一些类似的事情:

SimpleDateFormat myFormat = new SimpleDateFormat("dd MMM yyyy kkmm");
Date today = new Date();
today = myFormat.format(today);
我不能这样做,因为今天是
日期
,而
格式
返回一个
字符串
。我也尝试过:

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

}

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

我认为您试图实现的目标没有意义


Date
对象表示时间。你不能格式化它。但是,您可以以特定格式获取它的字符串表示形式。就像今天的myFormat.format一样

我认为你试图实现的目标毫无意义


Date
对象表示时间。你不能格式化它。但是,您可以以特定格式获取它的字符串表示形式。就像
myFormat.format(今天)

我想你在这里误解了
Date
对象是什么<代码>日期只是保存关于某个时间点的信息-它根本没有格式。当涉及到
日期的
字符串
表示时,这就是格式化的作用。只有在以下情况下才需要考虑格式:

  • 字符串
    表示解析为
    日期
    对象
  • 日期
    转换回
    字符串
    表示,以某种方式显示它
    我想你在这里误解了
    Date
    对象是什么<代码>日期
  • 只是保存关于某个时间点的信息-它根本没有格式。当涉及到
    日期的
    字符串
    表示时,这就是格式化的作用。只有在以下情况下才需要考虑格式:

  • 字符串
    表示解析为
    日期
    对象
  • 日期
    转换回
    字符串
    表示,以某种方式显示它
    你的问题没有道理。按定义格式化日期意味着使用特定格式将其转换为字符串。
    Date
    对象可以作为
    Date
    对象保留。只有在您希望将其转换为
    字符串时,才需要进行任何格式化。

    您的问题没有意义。按定义格式化日期意味着使用特定格式将其转换为字符串。
    Date
    对象可以作为
    Date
    对象保留。只有在您希望将其转换为
    字符串时,才需要进行任何格式化。

    您错误地查看了格式和日期

    • 日期不包含格式。Date只是一个包含日期、月份、小时、秒等日期信息的类
    • SimpleDataFormat告诉您日期的字符串表示形式。但没有与之相关的日期
    因此,当您必须显示日期或必须以某种字符串表示形式存储日期时,您将使用SimpleDataFormat并将您想要的字符串表示形式的日期传递给它

    这样做的一个好处是,我可以使用相同的日期对象,并可以显示两种不同的字符串表示形式(使用SimpleDataFormat的两个不同实例)。还有viceversa,在定义了一个SimpleDataFormat实例之后,我可以格式化多个日期

    编辑:

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

    Calendar rightNow = Calendar.getInstance();
    Calendar cal = new GregorianCalendar(
       rightNow.get(YEAR),
       rightNow.get(MONTH),
       rightNow.get(DAY_OF_MONTH));
    Date now = cal.getTime();
    
    还有其他好的解决方案,比如JodaTime

    参考:


    您错误地查看了格式和日期

    • 日期不包含格式。Date只是一个包含日期、月份、小时、秒等日期信息的类
    • SimpleDataFormat告诉您日期的字符串表示形式。但没有与之相关的日期
    因此,当您必须显示日期或必须以某种字符串表示形式存储日期时,您将使用SimpleDataFormat并将您想要的字符串表示形式的日期传递给它

    这样做的一个好处是,我可以使用相同的日期对象,并可以显示两种不同的字符串表示形式(使用SimpleDataFormat的两个不同实例)。还有viceversa,在定义了一个SimpleDataFormat实例之后,我可以格式化多个日期

    编辑:

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

    Calendar rightNow = Calendar.getInstance();
    Calendar cal = new GregorianCalendar(
       rightNow.get(YEAR),
       rightNow.get(MONTH),
       rightNow.get(DAY_OF_MONTH));
    Date now = cal.getTime();
    
    还有其他好的解决方案,比如JodaTime

    参考:


    不能将格式与日期对象关联,只能在显示或其他活动时应用格式


    是否对日期对象本身进行所有处理,并且在单独显示时更改为所需格式,

    您不能将格式与日期对象关联,而只能在显示或其他活动时应用格式


    是否对日期对象本身进行所有处理,并在单独显示时更改为所需格式,

    日期对象没有任何关联格式,这就是SimpleDataFormat存在的原因。。。你的观点到底是什么?我使用的是一个必须传递日期对象的接口。日期对象需要以特定的方式格式化。这是我的观点。我想知道如何做到这一点,这样我就不必从日期转换为字符串返回日期。这两句话自相矛盾:“我使用的是一个接口,我必须在其中传递一个日期对象”——“日期对象需要以特定的方式格式化”。同样,日期对象没有格式;今天没有关于时区、小时、分钟、秒等的信息。如果这不是所谓的格式设置,您希望我如何描述它?是的,我知道我是在说wr