SimpleDateFormat总是返回相同的结果

时间:2012-06-25 16:39:29

标签: java date simpledateformat

我有一个奇怪的问题。我有这个方法,它应该从目录名称生成一个日期。

private Date getSubfolderDate(File file) {
    String name = file.getName();
    SimpleDateFormat parser = new SimpleDateFormat("dd-MM-YY");
    Date date;
    try {
        date = parser.parse(name);
    } catch (ParseException e) {
        return null;
    }
    return date;
}

返回String name =“17-06-12”:“Mon Jan 02 00:00:00 CET 2012"

和String name =“18-06-12”:“Mon Jan 02 00:00:00 CET 2012”

为什么?

后来我将它们与compareTo(日期xy)进行比较,它返回0,所以它必须是相同的......

2 个答案:

答案 0 :(得分:3)

您的格式也不正确它应该是dd-MM-yy(对于17-06-12),要跟踪问题,请使用printStackTrace()

检查catch块

同时

SimpleDateFormat从String解析日期,结果Date将调用具有固定格式的toString()

因此,如果您希望再次打印格式化日期,则需要使用simpleDateFormat.format(dateInstance)

Date类没有任何包含要在toString()

中打印的格式的属性

答案 1 :(得分:3)

我试过这段代码:

static Date getSubfolderDate(File file) {
  String name = file.getName();
  SimpleDateFormat parser = new SimpleDateFormat("dd-MM-yy");
  Date date;
  try {
    date = parser.parse(name);
  } catch (ParseException e) {
    return null;
  }
  return date;
}
public static void main(String[] args) {
  System.out.println(getSubfolderDate(new File("17-06-12")));
  System.out.println(getSubfolderDate(new File("18-06-12")));
}

打印

Sun Jun 17 00:00:00 CEST 2012
Mon Jun 18 00:00:00 CEST 2012