比如说:输入年2008
       输入月1
       输入日26
求输入的日期与2008年1月1日间所差天数

解决方案 »

  1.   

    Calendar.DAY_OF_YEAR这个应该能帮上忙!
      

  2.   

    我说下过程
    用getTime();
    返回 2个 日期的毫秒数
    再相减 除以1000再除以60再除以60最后除以24
    就可以了
    getTime(); Date 类的方法
      

  3.   

    Calendar calendar = new GregorianCalendar(2008, Calendar.JANUARY, 26);
    int n = calendar.get(Calendar.DAY_OF_YEAR);
    System.out.println(n);Calendar.DAY_OF_YEAR,获得当前日期是这一年中的第几天,变相地计算与1月1日之间的天数差。如果不是与1月1日之间的差,可以采用2楼的方法。
      

  4.   

    没弄出来~~~~
    日期近的结果OK
    远的怎么出负值了?
    getTime()后两个日期相减,是long型的吧,
    比如n = (int)(d2.getTime()-d1.getTime())/86400000;
    是不是这句哪有毛病啊?
      

  5.   

    为啥要强转成int呢?
    long n = (d2.getTime()-d1.getTime())/86400000L;
      

  6.   

    public class getDays {
    /**
     * 注意这里若你输入类似1月33日这样的时间时,是不会提示你输入错误的 后台字符串与日期转换的时候会自动将多余的天数往后面月份加
     * 这正也是这个问题的解决进入点。
     */
    final static String b_date = "2008-1-1";// 开始日期
    final static String e_date = "2008-2-6";// 结束日期 private void getDaysFromCalendar(String date, String anotherDate) {
    DateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd");
    try { Date beginDate = dateformat.parse(date);
    Date endDate = dateformat.parse(anotherDate);
    Calendar c_begin = Calendar.getInstance();
    Calendar c_end = Calendar.getInstance();
    c_begin.setTime(beginDate);
    c_end.setTime(endDate);
    if (c_begin.after(c_end)) {
    System.out.println("请确保时间的先后顺序!!");
    System.exit(0);
    }
    if (c_begin.compareTo(c_end) == 0) {
    System.out.println("你这个傻子,两个相同的日期还要我告诉相差几天?");
    System.exit(0);
    }
    int j = 1;
    for (int i = 1;; j++) {
    c_begin.add(Calendar.DAY_OF_MONTH, i);
    if (c_begin.compareTo(c_end) == 0) {
    System.out.println(beginDate + "到" + endDate + "间相差" + j
    + "天");
    break;
    } else {
    System.out.println("还没有找到...");
    }
    if (j == 1000) {
    System.out.println("你比较的日期相隔超过1000天了");
    break; }
    } } catch (ParseException e) {
    e.printStackTrace();
    }
    } public static void main(String[] args) { new getDays().getDaysFromCalendar(b_date, e_date);
    System.exit(0);//可以不写,但是会出现小小的问题
    }}
      

  7.   

    随便你输入时间都OK了!思想最重要,也许我没写好,但是知道怎么得到就好了
    完全不要你考虑什么2月什么闰年!Calendar内部帮你解决了!
      

  8.   

    负数问题是long的数据超过了int的最大值被截短了,正巧高位为1时就变负的了。