2013-07-23 146 views
2

我有一個目錄結構,其中包含日期作爲文件夾名稱的文件夾。如何在日期中找到差異

Directory

我要刪除所有文件夾,除了最後兩天date.In這種情況下,除了今天的文件夾,最後兩個days.i.e.,23,22,21。在這裏,我不能使用joda時間來查找日期之間的差異。

這是我的代碼嘗試這一點。

DateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd"); 
    Calendar cal=Calendar.getInstance(); 
    cal.add(Calendar.DATE, -2); 
    //java.util.Date date=new java.util.Date(); 
    System.out.println("the date is "+dateFormat.format(cal.getTime())); 
    String direct="D:\\tempm\\Sample\\"+dateFormat.format(cal.getTime()); 
    File file=new File(direct); 
/* if(!file.exists()) 
    { 
     file.mkdir(); 
     System.out.println("folder created"); 
    }*/ 
    String path="D:\\tempm\\Sample\\"; 
    File file2=new File(path); 
    for(File fi:file2.listFiles()) 
    { 
     if(!fi.getAbsolutePath().equals(direct)) 
     { 
      System.out.println(fi.getAbsolutePath()); 
      FileDeleteStrategy.FORCE.delete(fi); 
      System.out.println("files except todays date were deleted"); 
     } 
    } 

如何找到日期的差別與格式?怎麼也減,作爲我的情況的路徑?任何想法,將更有利於

感謝

回答

3

這裏

Date d1 = null; 
Date d2 = null; 
    try { 
     d1 = Date.getInstance(); 
     d2 = format.parse(file2.getName()); 
    } catch (ParseException e) { 
     e.printStackTrace(); 
    }  

    long diff = d2.getTime() - d1.getTime(); 
    long diffDays = diff/(60 * 60 * 1000 * 24); 
    if(diffDays<=-3) 
    { 
     // Your code of delete 
    } 

現在你需要使用的文件夾的名稱來獲得日期和使用日期的實例爲差異

+0

我需要減去的另一面兩個日期呈現爲兩條不同的路徑。 –

+1

@VigneshVino路徑是dateStart和dateStop然後...我想你不想刪除最後兩天... –

+0

我怎麼知道這裏的開始日期和結束日期? –

2

這段代碼之間的回差兩個日期。

/** Using Calendar - THE CORRECT WAY**/ 
//assert: startDate must be before endDate 

public static long daysBetween(Calendar startDate, Calendar endDate) { 
    Calendar date = (Calendar) startDate.clone(); 
    long daysBetween = 0; 
    while (date.before(endDate)) { 
    date.add(Calendar.DAY_OF_MONTH, 1); 
    daysBetween++; 
    } 
    return daysBetween; 
} 
}