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:00CET2012"の場合に返されます

文字列名の場合="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 に答える