0

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

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"

对于字符串名称 = "18-06-12": "Mon Jan 02 00:00:00 CET 2012"

为什么?

后来我将这些与 compareTo(Date xy) 进行比较,它返回 0,所以它必须相同.....

4

2 回答 2

3

您的格式也应该是不正确dd-MM-yy的(对于 17-06-12),要追查问题,请检查 catch 块printStackTrace()

SimpleDateFormat从字符串中解析日期,结果日期将调用具有固定格式的 toString()

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

Date类没有任何属性来保存要打印的格式toString()

于 2012-06-25T16:40:52.853 回答
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
于 2012-06-25T16:48:26.307 回答