【问题标题】:SimpleDateFormat is not Formatting the Date as specified [duplicate]SimpleDateFormat 未按指定格式化日期 [重复]
【发布时间】:2016-10-21 01:51:55
【问题描述】:

我正在尝试以格式获取当前日期。 “年年/月/日”。我编写了以下代码来实现这一点。

    DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd", Locale.US);
    Calendar cal = Calendar.getInstance();

        String dateStr = dateFormat.format(cal.getTime());
        currentDate=  dateFormat.parse(dateStr);

处理后当前Date的值是这个

Mon Jun 20 00:00:00 GMT+05:00 2016,

dateStr格式化后的值为2016/06/20

请指导我在这里做错了什么。

【问题讨论】:

  • / 替换为-?
  • 并交换ddMM?
  • MM 表示月份,20 在我知道的任何日历中都不是有效月份。格式化为年-日-月是非常奇怪的,如果那是你真正想要做的。
  • 感谢 cmets,但它仍然返回我 Mon Jun 20 00:00:00 GMT+05:00 2016,
  • 这是一个错字,我编辑了,我需要以yyyy/MM/dd 格式输出,但它以Mon Jun 20 00:00:00 GMT+05:00 2016 格式返回给我

标签: java date


【解决方案1】:

您对它的工作原理感到困惑。

DateFormat.format 接受Date 并将其转换为字符串。正是这个字符串(代码中的dateStr)以您想要的格式保存日期。

DateFormat.parse 接受String 并将其转换为DateDate 对象是一个日期(更准确地说是一毫秒),它没有格式。如果您打印生成的Date 对象,它将使用其toString() 实现打印,该实现显示Mon Jun... 字符串。但该值与您生成 Date 实例的 DateFormat 没有任何关系。

【讨论】:

  • 谢谢,我明白了:)
猜你喜欢
  • 1970-01-01
  • 2012-05-05
  • 1970-01-01
  • 1970-01-01
  • 2012-11-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多