我有一段日期
String begtime = “2008-11-11”;(不确定)
String endtime = “2008-11-15”;(不确定)我想得到两段日期之间的日期,比如“2008-11-12”,“2008-11-13”,“2008-11-14”请问如何计算

解决方案 »

  1.   

    把字符串时间 转成 DATE格式 然后转换成long(毫秒)形式的数据相减。在转换成日期数据。
    也可以直接使用Date方法 分别对年月日相减。哎 方法挺笨的。
    期待楼下的解答。
      

  2.   

    用java.util.Calendar
    在开始的java.util.Calendar上每日加1,
    与结束的java.util.Calendar相比,
    可以找到中间的日期。
      

  3.   

    try this:/**
     * 对输入的日期dt移动num个单位prdM后得到的日期
     * @param dt   :输入的日期(yyyymmdd)
     * @param num  :数量
     * @param prdM :移动单位(D:天 M:月 Y:年)
     * @param dtFormat : 日期的格式(yyyyMMdd)
     * @return
     */
    public static String moveDate(String dt,String dtFormat,int num,String prdM)
    {
    if(dt==null||dt.length()<=0)
    return "";

    SimpleDateFormat format = new SimpleDateFormat(dtFormat);
    Date date = null;
    try {
    date = format.parse(dt);
    } catch (ParseException e) {
    System.out.println("日期格式转换错误!!!");
    e.printStackTrace();
    return "";
    }
    GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();
    gc.setTime(date);
    char type = prdM.charAt(0);
    switch(type)
    {
    case 'M':
    case 'm':
    gc.add(Calendar.MONTH,num);
    break;
    case 'd':
    case 'D':
    gc.add(Calendar.DATE,num);
    break;
    case 'Y':
    case 'y':
    gc.add(Calendar.YEAR,num);
    break;
    }
    return format.format(gc.getTime());
    }
      

  4.   


    public static void main(String args[]){
    java.util.Calendar c = java.util.Calendar.getInstance();

    c.set(2008, 11, 11); //开始时间,你把你的时间set进去

    java.util.Calendar d = java.util.Calendar.getInstance();
    d.set(2008, 11, 15);//结束时间,你把你的时间set进去

    while(c.get(java.util.Calendar.DAY_OF_MONTH)< d.get(java.util.Calendar.DAY_OF_MONTH) - 1)
    {
    c.add(java.util.Calendar.DAY_OF_MONTH, 1);
    System.out.println(c.getTime());
    }
    }
      

  5.   


    String begtimeStr = "2008-11-11";
    String endtimeStr = "2008-11-15";
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    Date begtime,endtime,currentTime;
    try {
       begtime = sdf.parse(begtimeStr);
       endtime = sdf.parse(endtimeStr);
    } catch (Exception e) {
       System.out.println("日期转化出错");
       return;
    }int days = (int) (endtime.getTime() - begtime.getTime()) / 86400000;
    if(days <= 0) {
       System.out.println("开始时间小于或等于结束时间");
       return;
    }for (int i = 0; i <= days; i++) {
       Calendar calendar = Calendar.getInstance();
       calendar.setTime(begtime);
       calendar.add(Calendar.DATE, i);
       currentTime = calendar.getTime();
       System.out.println("日期:"+sdf.format(currentTime));
    }
      

  6.   


    for (int i = 0; i <= days; i++) 改成for (int i = 1; i < days; i++) 就不会输出边界日期了
      

  7.   


    package com.lihan;  
    public class Test { 
    public static void main(String args[]){
            java.util.Calendar c = java.util.Calendar.getInstance();
            
            c.set(2008, 11, 11); //开始时间,你把你的时间set进去
            
            java.util.Calendar d = java.util.Calendar.getInstance();
            d.set(2008, 11, 15);//结束时间,你把你的时间set进去
            
            while(c.get(java.util.Calendar.DAY_OF_MONTH)< d.get(java.util.Calendar.DAY_OF_MONTH) - 1)
            {
                c.add(java.util.Calendar.DAY_OF_MONTH, 1);
                System.out.println(c.getTime());
            }
        }

    Fri Dec 12 11:10:02 CST 2008
    Sat Dec 13 11:10:02 CST 2008
    Sun Dec 14 11:10:02 CST 2008之后就是处理显示形式的问题的
      

  8.   


           public static void main(String[] args) throws ParseException {
    DateFormat df = DateFormat.getDateInstance();
    String sreDate = null;
    Date beginDate = df.parse("2008-11-11");
    Date endDate = df.parse("2008-11-23");
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    while(beginDate.getTime()+24*60*60*1000<endDate.getTime()) {
    Date getDate = new Date(beginDate.getTime()+24*60*60*1000);
    sreDate = sdf.format(new Date(beginDate.getTime()+24*60*60*1000));
    System.out.println(sreDate);
    beginDate = getDate;
    }
    }
      

  9.   


    在使用Calendar 进行初始化时,月份从0开始,至11结束,
    所以应该是
     c.set(2008, 11, 11); //开始时间,2008年12月11日
      

  10.   

    public class TempTest {
    private static void getDateInterval(String beDate, String enDate)
    throws ParseException {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    long interval = 0L;// 两个时间的间隔毫秒数
    int dayInterval = 0;// 间隔的天数
    interval = sdf.parse(enDate).getTime() - sdf.parse(beDate).getTime();
    dayInterval = (int) (interval / (1 * 24 * 60 * 60 * 1000));
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(sdf.parse(beDate));
    for (int i = 1; i < 4; i++) {
    calendar.add(Calendar.DAY_OF_MONTH, 1);
    System.out.println(sdf.format(calendar.getTime()));
    }
    }
    public static void main(String[] args) throws Exception {
    String begtime = "2008-11-11";
    String endtime = "2008-11-15"; getDateInterval(begtime, endtime);
    }
    }
    //运行结果:
    2008-11-12
    2008-11-13
    2008-11-14
      

  11.   


    public class TempTest {
    private static void getDateInterval(String beDate, String enDate)
    throws ParseException {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    long interval = 0L;// 两个时间的间隔毫秒数
    int dayInterval = 0;// 间隔的天数
    interval = sdf.parse(enDate).getTime() - sdf.parse(beDate).getTime();
    dayInterval = (int) (interval / (1 * 24 * 60 * 60 * 1000));
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(sdf.parse(beDate));
    for (int i = 1; i < 4; i++) {
    calendar.add(Calendar.DAY_OF_MONTH, 1);
    System.out.println(sdf.format(calendar.getTime()));
    } }
    public static void main(String[] args) throws Exception {
    String begtime = "2008-11-11";
    String endtime = "2008-11-15";
    getDateInterval(begtime, endtime);
    }
    }
    //运行结果:
    2008-11-12
    2008-11-13
    2008-11-14
      

  12.   


        public static void test(){
            SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");
            try {
                String begintime="2008-11-11";
                String endtime="2008-11-15";
              
                Calendar bt=Calendar.getInstance();
                Calendar dt=Calendar.getInstance();
                
                bt.setTime(format.parse(begintime));
                dt.setTime(format.parse(endtime));            
                
                int days=(int)(dt.getTimeInMillis()-bt.getTimeInMillis())/1000/60/60/24;//计算两个日期相差的天数            
             
                for(int i=0;i<days;i++){
                    bt.add(Calendar.DAY_OF_MONTH, 1);
                    System.out.println(format.format(bt.getTime()));
                }
            } catch (Exception e) {
               
            }               
        }
      

  13.   

    import java.util.Date;public class DateOperator { /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    String startDate = "2008-11-11";
    String endDate = "2009-01-15";
    String[] sdt = startDate.split("-");
    String[] edt = endDate.split("-");

    Calendar sc = Calendar.getInstance();
    Calendar ec = Calendar.getInstance();

    DateFormat df = new SimpleDateFormat("yyyy-MM-dd");

    Date start = null;
    Date end = null;

    int[] sd = new int[]{Integer.parseInt(sdt[0]),Integer.parseInt(sdt[1]),Integer.parseInt(sdt[2])};
    int[] ed = new int[]{Integer.parseInt(edt[0]),Integer.parseInt(edt[1]),Integer.parseInt(edt[2])};

    sc.set(sd[0], sd[1]-1, sd[2]);
    ec.set(ed[0], ed[1]-1, ed[2]-1);

    do{
    sc.add(Calendar.DATE, 1);
    System.out.println(df.format(sc.getTime()));
    }
    while(sc.getTime().before(ec.getTime()));
    }
    }
      

  14.   

    先格式化,然后用calendar做计算,14L的代码很清晰。
      

  15.   

    String startDate = "2009-11-11";
        String endDate   = "2009-11-15";
        long startTime= simpdate.parse(strdate1).getTime();
        long endTime = simpdate.parse(strdate2).getTime();
        int day = 0;
        Date date = new Date();
        day = (int)(endTime - startTime)/1000/60/60/24/1;
        for(int i = 1;i < day;i++){
         startTime += 1*24*60*60*1000;
        date.setTime(startTime);
        System.out.println(simpdate.format(date));
        }