String strDate1 = "2002-01-21";
String strDate2 = "2002-02-5";
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        Date d1 = format.parse(strDate1);
        Date d2 = format.parse(strDate2);
        System.out.println((d2.getTime() - d1.getTime()) / 3600000 / 24);

解决方案 »

  1.   

    String strDate1 = "2002-01-21";
            String strDate2 = "2002-01-25";
            try
            {
             SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
             Date d1 = format.parse(strDate1);
             Date d2 = format.parse(strDate2);
             Date temp=d1;
             for (int i=0;i<(d2.getTime() - d1.getTime()) / 3600000 / 24;i++)
             {
             temp=new Date(d1.getTime()+i * 3600000 * 24);
             System.out.println(temp);
             }
             System.out.println((d2.getTime() - d1.getTime()) / 3600000 / 24);
            }
            catch(Exception e)
            {
             System.out.println(e.getMessage());
            }
      

  2.   

    int d= (int)(d2.getTime() - d1.getTime()) / 3600000 / 24;
    for(i=0;i<d;i++)
    {
    d1.getTime()+
      

  3.   

    java.text.SimpleDateFormat format=new java.text.SimpleDateFormat("yyyy-MM-dd");
        java.util.Date d1 = format.parse(st);
        java.util.Date d2 = format.parse(ot);
    java.util.Date temp=d1;
        for (int i=0;i<=(d2.getTime() - d1.getTime()) / 3600000 / 24;i++)
        {
         temp=new java.util.Date(d1.getTime()+i * 3600000 * 24);
            out.print(temp);
    }
    我是这样写的,可是出来temp的值是 Mon Feb 03 00:00:00 GMT+08:00 2003 
    我想要的是像2002-2-3因为要用这个做为查询条件。
      

  4.   

    可以先求出两个日期相对基准时间的秒数,然后相减,再除以一天的秒数,就是天数,取秒数的例子如下:
      java.util.Date myTime;//定义一个myTime物件
      myTime = new java.util.Date();//将其初始化
      long firstdate1 = myTime.UTC(year,month,day,0,0,0);//求出截止日期的相对基准时间的秒数
      

  5.   

    http://expert.csdn.net/Expert/TopicView1.asp?id=1417437帮忙
      

  6.   

    现在显示出来的日期是Tue Feb 11 00:00:00 GMT+08:00 2003 怎么能够把这个变成2003-2-3呢?
      

  7.   


    String strDate1 = "2002-01-21";
            String strDate2 = "2002-01-25";
            try
            {
             SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
             Date d1 = format.parse(strDate1);
             Date d2 = format.parse(strDate2);
             Date temp=d1;
             for (int i=0;i<(d2.getTime() - d1.getTime()) / 3600000 / 24;i++)
             {
             temp=new Date(d1.getTime()+i * 3600000 * 24);
             System.out.println(format.format(temp));
             }
             System.out.println((d2.getTime() - d1.getTime()) / 3600000 / 24);
            }
            catch(Exception e)
            {
             System.out.println(e.getMessage());
            }
      

  8.   

    study_body(珍惜每一天) 你刚发的帖子和你第一次发的一样啊!!
      

  9.   

    System.out.println(format.format(temp));不一样,运行一下看结果
      

  10.   

    非常感谢 study_body(珍惜每一天) ,问题已经解决!果然是高手啊!佩服!给分!
      

  11.   

    study_body(珍惜每一天) ,我测出一个BUG当起始时间和终止时间不在一个月时就会出现问题,例如起始时间是:2003-01-15 终止时间是2003-02-11 可是到2003-02-08 以后的三天就是这样了:
    2002-12-21 
    2002-12-22  
    2002-12-23 
      

  12.   

    修改如下:
    String strDate1 = "2002-11-15";
            String strDate2 = "2003-02-11";
            long lng1;
            try
            {
             SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
             Date d1 = format.parse(strDate1);
             Date d2 = format.parse(strDate2);
             Date temp=d1;
             int int1=(int)((d2.getTime() - d1.getTime()) / 3600000 / 24);
             for (int i=0;i<int1;i=i+1)
             {
             lng1=d1.getTime()+i * 3600000 * 24;
             temp=new Date(temp.getTime()+3600000 * 24);
             //System.out.println(d1.getTime());
             //System.out.println(i);
             //System.out.println(lng1);
             //System.out.println(d2.getTime());
             System.out.println(format.format(temp));
             }
             System.out.println((d2.getTime() - d1.getTime()) / 3600000 / 24);
            }
            catch(Exception e)
            {
             System.out.println(e.getMessage());
            }
    不过前面的错误还没有查找到原因。
      

  13.   

    API中Date有个构造函数为Date(long )
    new Date(d2.getTime());正常
    System.out.println(d2.getTime()); 结果为1044892800000
    而 new Date(1044892800000)就错了,真是奇怪,那位能告诉是什么原因吗?
    估计是long超出范围
    但是为什么new Date(d2.getTime());正常呢?
      

  14.   

    我就是把你的程序改成这样了
    java.util.Date temp=new java.util.Date(d1.getTime()-3600000 * 24);
    long int1=(long)((d2.getTime() - d1.getTime()) / 3600000 / 24);
    for (int i=0;i<=int1;i++){
    temp=new java.util.Date(temp.getTime()+3600000 * 24);
    我就是不明白为什么要乘以3600000呢?