Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何找出日期的差异_Java_Datetime - Fatal编程技术网

Java 如何找出日期的差异

Java 如何找出日期的差异,java,datetime,Java,Datetime,我有一个目录结构,其中包含以日期作为文件夹名的文件夹 我想删除除最后两天日期之外的所有文件夹。在这种情况下,除了今天的文件夹和最后两天,即23、22、21。在这里,我不能用乔达的时间来找出日期之间的差异 这是我的代码试图实现这一点 DateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd"); Calendar cal=Calendar.getInstance(); cal.add(Calendar.DATE, -2);

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

我想删除除最后两天日期之外的所有文件夹。在这种情况下,除了今天的文件夹和最后两天,即23、22、21。在这里,我不能用乔达的时间来找出日期之间的差异

这是我的代码试图实现这一点

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");
        }
    } 
如何用这种格式找出日期的差异?以及如何减去它作为我案例的路径?任何想法都会更有帮助


谢谢

此代码将返回两个日期之间的差异

/** 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;  
}  
}  

此代码将返回两个日期之间的差异

/** 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;  
}  
}  
这里

dated1=null;
日期d2=空;
试一试{
d1=Date.getInstance();
d2=format.parse(file2.getName());
}捕获(解析异常){
e、 printStackTrace();
}    
long diff=d2.getTime()-d1.getTime();
长diffDays=diff/(60*60*1000*24);
如果(d此处

dated1=null;
日期d2=空;
试一试{
d1=Date.getInstance();
d2=format.parse(file2.getName());
}捕获(解析异常){
e、 printStackTrace();
}    
long diff=d2.getTime()-d1.getTime();
长diffDays=diff/(60*60*1000*24);

如果(DiffDay我需要减去两个不同路径的日期。@VigneshVino路径是dateStart和dateStop然后…我以为你不想删除最后两天…我怎么知道这里的开始日期和结束日期???@VigneshVino我已经编辑了答案,请计算你拥有的两个文件夹的差异。如果仍然不好告诉我我没有从你的问题中得到什么,每天都会创建一个带有相应日期的新文件夹。我想要的是我的目录必须删除除最后两天之外的所有文件夹。我需要减去两个以两个不同路径出现的日期。@VigneshVino路径是dateStart和dateStop然后…我以为你不想删除last两天…我如何知道这里的开始日期和结束日期???@VigneshVino我已经编辑了答案,这是计算你拥有的两个文件夹的差异。如果仍然不好,请告诉我我没有从你的问题中得到什么每天都会创建一个带有相应日期的新文件夹。我想要的是,我的目录必须删除除最后两个之外的所有文件夹天。