如何找到日期的差异

时间:2013-07-23 06:57:30

标签: java datetime

我有一个目录结构,其中包含日期作为文件夹名称的文件夹。

Directory

我想删除除最后两天之外的所有文件夹。在这种情况下除了今天的文件夹和最后两天.i.e.,23,22,21。在这里,我无法使用joda-time来查找日期之间的差异。

这是我的代码尝试这个。

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");
        }
    } 

如何找到这种格式的日期差异?还有如何将其作为我的案例的路径减去?任何想法都会更有帮助

感谢

2 个答案:

答案 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;  
}  
}  

答案 1 :(得分:2)

这里

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
    }

现在您只需要使用文件夹的名称来获取日期,并使用Date的实例来区分差异的另一面