【问题标题】:DateFormat does not work?日期格式不起作用?
【发布时间】:2013-01-22 14:11:20
【问题描述】:
String selectedDate = "2012-" + createdMonth + "-" + createdDay;

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");

try {
    createdDate = dateFormat.parse(selectedDate);
} catch (ParseException e1) {
    e1.printStackTrace();
}

System.out.println(createdDate);

基本上当我打印 createdDate 时,它​​会显示如下内容: 2012 年 3 月 8 日星期四 00:00:00 CST

而不是这种格式的“yyyy-MM-dd”。非常感谢!

【问题讨论】:

  • 日期有一个你已经看到的默认格式。如果要以特定格式显示它,则需要再次使用该 DateFormat 将其转换回要解析的字符串。 (当然这有点毫无意义)

标签: java date format


【解决方案1】:

parse 方法返回 java.util.Date,这就是 toString()Date 实现返回的内容。

【讨论】:

    【解决方案2】:

    您需要打印如下。重点是您还需要使用在打印时创建的格式化程序对象。

    System.out.println(dateFormat.format(createdDate));
    

    【讨论】:

      【解决方案3】:

      使用dateFormat.format(createdDate)

      【讨论】:

        【解决方案4】:

        您似乎认为createdDate 是一个Date 对象,格式为yyyy-MM-dd。它没有。 Date 对象没有格式 - 它们只包含一个时间戳,就像数字只是数字一样,它们本身没有格式。

        SimpleDateFormat 对象用于将String 解析为Date 对象,或将Date 对象格式化为String

        如果您有一个Date 对象并且想要以特定格式显示日期,则使用SimpleDateFormat 对象将其转换为具有适当格式的String

        SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
        String text = fmt.format(createdDate);
        System.out.println("Created: " + text);
        

        如果您打印 Date 对象而不显式格式化它,它将使用默认格式进行格式化,这就是您看到 Thu Mar 08 00:00:00 CST 2012 的原因。

        Date 对象不记得您解析它的 String 的格式。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-04-10
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多