现有两个字符串String s1 = "20080808";String s2 = "20080901";从控制台输出这两个字符串之间相差的天数,代码怎么写?

解决方案 »

  1.   


    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;public class TestData {
    public static void main(String args[]){
    SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
    String s1 = "20080808";
    String s2 = "20080901";
    try {
    Date d1 = sdf.parse(s1);
    Date d2 = sdf.parse(s2);
    System.out.println((d2.getTime() -  d1.getTime())/(3600L*1000*24)); 
    } catch (ParseException e) {
    e.printStackTrace();
    }

    }
    }
      

  2.   

    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;public class TestDate {
        public static void main(String args[]){
            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
            String s1 = "20080808";
            String s2 = "20080901";
            try {
                Date d1 = sdf.parse(s1);
                Date d2 = sdf.parse(s2);
                Calendar c1=Calendar.getInstance();
                c1.setTime(d1);
                Calendar c2=Calendar.getInstance();
                c2.setTime(d2);
                System.out.print(c1.get(Calendar.DAY_OF_YEAR)-c2.get(Calendar.DAY_OF_YEAR));
                
            } catch (ParseException e) {
                e.printStackTrace();
            }
            
        }
    }
      

  3.   

    import java.util.*; 
    import java.text.*; public class DisplayDateEveryday { 
        public static void main(String args[]){ 
             
            display("2008-08-08", "2008-08-24"); 
             
        } 
         
        public static void display(String dateFirst, String dateSecond){ 
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); 
             
            try{ 
                Date dateOne = dateFormat.parse(dateFirst); 
                Date dateTwo = dateFormat.parse(dateSecond); 
                 
                Calendar calendar = Calendar.getInstance(); 
                 
                calendar.setTime(dateOne); 
                 
                while(calendar.getTime().before(dateTwo)){               
                    System.out.println(dateFormat.format(calendar.getTime())); 
                     
                    calendar.add(Calendar.DAY_OF_MONTH, 1);              
                } 
            } 
            catch(Exception e){ 
                e.printStackTrace(); 
            } 
             
        } 
    }
    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/justinavril/archive/2008/09/06/2891266.aspx
      

  4.   

    楼上的是对的
    package com.softeem.paixu;import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;public class TestDate {
    public static void main(String args[]) {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
    String s1 = "20080808";
    String s2 = "20080901";
    try {
    Date d1 = sdf.parse(s1);
    Date d2 = sdf.parse(s2);
    Calendar c1 = Calendar.getInstance();
    c1.setTime(d1);
    Calendar c2 = Calendar.getInstance();
    c2.setTime(d2);
    System.out.print(c1.get(Calendar.DAY_OF_YEAR)- c2.get(Calendar.DAY_OF_YEAR)); } catch (ParseException e) {
    e.printStackTrace();
    } }
    }
      

  5.   

    把上面大家写的整合到一起import java.util.*;
    import java.text.*;public class DisplayDateEveryday {

    private static SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");

    public static void main(String args[]) { String dateFirst = "20080808";
    String dateSecond = "20090924";
    display(dateFirst, dateSecond);
    displayAdd(dateFirst, dateSecond);
    castDate(dateFirst, dateSecond);
    }

    public static void castDate(String dateFirst, String dateSecond) {
            try {
                Date d1 = sdf.parse(dateFirst);
                Date d2 = sdf.parse(dateSecond);
                System.out.println("日期之差为:\t" + (d2.getTime() -  d1.getTime())/(3600L*1000*24)); 
            } catch (ParseException e) {
                e.printStackTrace();
            } } public static void display(String dateFirst, String dateSecond) {
    try {
    Date dateOne = sdf.parse(dateFirst);
    Date dateTwo = sdf.parse(dateSecond); Calendar calendar = Calendar.getInstance(); calendar.setTime(dateOne);
    int i = 0;
    while (calendar.getTime().before(dateTwo)) {
    System.out.println(sdf.format(calendar.getTime()));
    i ++;
    calendar.add(Calendar.DAY_OF_MONTH, 1);
    }
    System.out.println(i);
    } catch (Exception e) {
    e.printStackTrace();
    }
    }

    public static void displayAdd(String dateFirst, String dateSecond){
            try {
                Date d1 = sdf.parse(dateFirst);
                Date d2 = sdf.parse(dateSecond);
                Calendar c1=Calendar.getInstance();
                c1.setTime(d1);
                Calendar c2=Calendar.getInstance();
                c2.setTime(d2);
                System.out.println("displayAdd == " + (c2.get(Calendar.DAY_OF_YEAR)-c1.get(Calendar.DAY_OF_YEAR)));
                
            } catch (ParseException e) {
                e.printStackTrace();
            }
            
        }}
      

  6.   

    1L的方便,其实用substring也行,就是麻烦点
      

  7.   

    Long s1 = new Long("20080808");
    Long s2 = new Long("20080901");
    Long datetime =s2-s1;
    int second = new Long(datetime / 1000).intValue();
    int day = second / (3600 * 24);
      

  8.   

    package com.date.utlit;import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.GregorianCalendar;
    /**
     * 计算任意2个日期内的工作日(没有考虑到国定假日)
     * @author user
     *
     */
    public class DateCal { /**
      * @param args
      */
     public static void main(String[] args) {
      try {   String strDateStart = "2006-10-1";
       String strDateEnd = "2006-10-14";
       SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
       Date date_start = sdf.parse(strDateStart);
       Date date_end = sdf.parse(strDateEnd);
       DateCal app = new DateCal();
       Calendar cal_start = Calendar.getInstance();
       Calendar cal_end = Calendar.getInstance();
       cal_start.setTime(date_start);
       cal_end.setTime(date_end);
       System.out.println("星期-->" + app.getChineseWeek(cal_start)
         + " 日期-->" + cal_start.get(Calendar.YEAR) + "-"
         + (cal_start.get(Calendar.MONTH) + 1) + "-"
         + cal_start.get(Calendar.DAY_OF_MONTH));
       System.out.println("星期-->" + app.getChineseWeek(cal_end) + " 日期-->"
         + cal_end.get(Calendar.YEAR) + "-"
         + (cal_end.get(Calendar.MONTH) + 1) + "-"
         + cal_end.get(Calendar.DAY_OF_MONTH));
       System.out.println("工作日为-->"
         + app.getWorkingDay(cal_start, cal_end));
       System.out.println("休息日-->"+app.getHolidays(cal_start, cal_end));
      } catch (Exception e) {
       // TODO: handle exception
      }
     } public int getDaysBetween(java.util.Calendar d1, java.util.Calendar d2) {
      if (d1.after(d2)) { // swap dates so that d1 is start and d2 is end
       java.util.Calendar swap = d1;
       d1 = d2;
       d2 = swap;
      }
      int days = d2.get(java.util.Calendar.DAY_OF_YEAR)
        - d1.get(java.util.Calendar.DAY_OF_YEAR);
      int y2 = d2.get(java.util.Calendar.YEAR);
      if (d1.get(java.util.Calendar.YEAR) != y2) {
       d1 = (java.util.Calendar) d1.clone();
       do {
        days += d1.getActualMaximum(java.util.Calendar.DAY_OF_YEAR);
        d1.add(java.util.Calendar.YEAR, 1);
       } while (d1.get(java.util.Calendar.YEAR) != y2);
      }
      return days;
     } /**
      * 计算2个日期之间的相隔天数
      * @param d1
      * @param d2
      * @return
      */
     public int getWorkingDay(java.util.Calendar d1, java.util.Calendar d2) {
      int result = -1;
      if (d1.after(d2)) { // swap dates so that d1 is start and d2 is end
       java.util.Calendar swap = d1;
       d1 = d2;
       d2 = swap;
      }  int betweendays = getDaysBetween(d1, d2);  
      int charge_date = 0;
      int charge_start_date = 0;//开始日期的日期偏移量
      int charge_end_date = 0;//结束日期的日期偏移量
       // 日期不在同一个日期内
       int stmp;
       int etmp;
       stmp = 7 - d1.get(Calendar.DAY_OF_WEEK);
       etmp = 7 - d2.get(Calendar.DAY_OF_WEEK);
       if (stmp != 0 && stmp != 6) {// 开始日期为星期六和星期日时偏移量为0
        charge_start_date = stmp - 1;
       }
       if (etmp != 0 && etmp != 6) {// 结束日期为星期六和星期日时偏移量为0
        charge_end_date = etmp - 1;
       }
    //  }
      result = (getDaysBetween(this.getNextMonday(d1), this.getNextMonday(d2)) / 7)
        * 5 + charge_start_date - charge_end_date;
      //System.out.println("charge_start_date>" + charge_start_date);
      //System.out.println("charge_end_date>" + charge_end_date);
      //System.out.println("between day is-->" + betweendays);
      return result;
     } public String getChineseWeek(Calendar date) {
      final String dayNames[] = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五",
        "星期六" };  int dayOfWeek = date.get(Calendar.DAY_OF_WEEK);  // System.out.println(dayNames[dayOfWeek - 1]);
      return dayNames[dayOfWeek - 1]; } /**
      * 获得日期的下一个星期一的日期
      * 
      * @param date
      * @return
      */
     public Calendar getNextMonday(Calendar date) {
      Calendar result = null;
      result = date;
      do {
       result = (Calendar) result.clone();
       result.add(Calendar.DATE, 1);
      } while (result.get(Calendar.DAY_OF_WEEK) != 2);
      return result;
     } 
     
     /**
      * 
      * @param d1
      * @param d2
      * @return
      */
     public int getHolidays(Calendar d1,Calendar d2){
      return this.getDaysBetween(d1, d2)-this.getWorkingDay(d1, d2);
      
     }}
    计算两个日期间的工作日
      

  9.   

    mport java.text.SimpleDateFormat;
    import java.util.Date;
    public class test {public test() { 
    }public long fromDateStringToLong(String inVal) { //此方法计算时间毫秒 
    Date date = null; //定义时间类型 
    SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-mm-dd hh:ss"); 
    try { 
    date = inputFormat.parse(inVal); //将字符型转换成日期型 
    } catch (Exception e) { 
    e.printStackTrace(); 

    return date.getTime(); //返回毫秒数 
    }private static String dqsj() { //此方法用于获得当前系统时间(格式类型2007-11-6 15:10:58) 
    Date date = new Date(); //实例化日期类型 
    String today = date.toLocaleString(); //获取当前时间 
    System.out.println("获得当前系统时间 "+today); //显示 
    return today; //返回当前时间 
    }public static void main(String[] args) { 
    String dqsj = dqsj(); //获得String dqsj = dqsj(); //获得当前系统时间 
    test df = new test(); //实例化方法long startT=df.fromDateStringToLong("2005-03-03 14:51:23"); //定义上机时间 
    long endT=df.fromDateStringToLong("2004-03-03 13:50:23"); //定义下机时间long ss=(startT-endT)/(1000); //共计秒数 
    int MM = (int)ss/60; //共计分钟数 
    int hh=(int)ss/3600; //共计小时数 
    int dd=(int)hh/24; //共计天数System.out.println("共"+dd+"天 准确时间是:"+hh+" 小时 "+MM+" 分钟"+ss+" 秒 共计:"+ss*1000+" 毫秒");} 
    }