我这也有一道提,不知怎么写。
 求两个日期之间的天数。输入的都是字符串形式,例如2004/03/21,2006/03/21。求两个之间的天数。最好把c和java的两种都写出来。
第一中方法可以系统函数。
第二种方法不能用系统函数。
int days(string date1,string date2)
我也知道写一点,就是可能写的不完整。这程序很长,面试的时候写这样的程序很费时间的呀,而且也没什么地方可以写的下,所以我看到这样的题目很烦,一般都不愿写。

解决方案 »

  1.   

    正好这两天写了这个程序,是用c写的,现在发上来看看。
    欢迎有更好的答案/* ==================计算某年某一天到该年年初的天数=================== */int days_of_year(int year,int mon,int day)
    {
        int days_of_mon[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
        int  i, days;    if (leap(year)==1) /* 如果是闰年,则这年的2月有29天 */
            days_of_mon[1]=29;
        else
            days_of_mon[1]=28;    days = 0;    for ( i = 0; i < mon - 1; i++ )
            days += days_of_mon[i];
        days += day;
        return days;
    }
    /*============================================================================*//*====================判断是否闰年.是返回true==========================*/
    leap(int year)
    {
        if (( (year%4==0) && (year%100!=0) ) || (year%400==0) )
        return 1;
    }
    /*============================================================================*/main()
    {  int i,days=0,day1=0,day2=0;
       int StartYear,StartMon,StartDay;
       int EndYear,EndMon,EndDay;   printf("Please input StartYear and EndYear!\n");
       printf("StartYear:");
       scanf("%d,%d,%d",&StartYear,&StartMon,&StartDay);
       printf("EndYear:");
       scanf("%d,%d,%d",&EndYear,&EndMon,&EndDay);
       if(StartYear == EndYear) /* 同一年,先分别计算起始年和末年离该年最后一天的天数day1和day2,最后二者之差即得结果*/
        {
           if( leap(StartYear)==1 )
              {
                 day1 =366-days_of_year(StartYear,StartMon,StartDay);
                 day2 =366-days_of_year(EndYear,EndMon,EndDay);
                 days =(day1-day2);
              }
           else
              {
                 day1 =365-days_of_year(StartYear,StartMon,StartDay);
                 day2 =365-days_of_year(EndYear,EndMon,EndDay);
                 days +=(day1-day2);
              }
           printf("Result:%d",days);
           getch();
           return;
        }   else  /*不是同一年,则先计算起始年和末年的天数day1和day2,再算中间相隔整年的天数,最后二者相加即得结果*/
        {
            if ( leap(StartYear)==1 )            day1 += 366-days_of_year(StartYear,StartMon,StartDay);        else            day1 += 365-days_of_year(StartYear,StartMon,StartDay);        day2 += days_of_year(EndYear,EndMon,EndDay);        days +=(day1+day2);
        }    for(i=(StartYear+1);i<EndYear;i++) /* 计算相隔整年的天数*/
        {
            if ( leap(i)==1 )
                days += 366;
            else
                days += 365;
        }    printf("Result:%d",days);
        getch();}
      

  2.   

    DateFormat df = new SimpleDateFormat("yyyy/MM/dd");
    Date d1 = df.parse("2004/03/21");
    Date d2 = df.parse("....");int days = (d2.getTime()-d1.getTime())/(3600*1000*24);
      

  3.   

    package test;import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    public class CalDays {
        public static void main(String[] args) throws ParseException {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
            Date d1 = sdf.parse("2004/03/21");
            Date d2 = sdf.parse("2006/03/21");
            long days = (d2.getTime() - d1.getTime())/ (1000 * 60 * 60 * 24);  
            System.out.println(days);
        }
    }
      

  4.   

    public static void  main(String[] args) throws Exception{
    Calendar calendar=Calendar.getInstance();
    String start="2004/03/21",end="2006/03/21";
    calendar.setTime(getDateTime(start));
    long s=calendar.getTimeInMillis();
    calendar.setTime(getDateTime(end));
    System.out.print("now data:"+(calendar.getTimeInMillis()-s)/(24*60*60*1000));
    }
       /**
        * 得到时间
        * @return
     * @throws Exception 
        */
     public static  java.util.Date getDateTime(String date) throws Exception {       
          SimpleDateFormat format=new SimpleDateFormat("yyyy/MM/dd");
         try {
    return format.parse(date);
    } catch (ParseException e) {
    // TODO 自动生成 catch 块
    e.printStackTrace();
    throw new Exception("不是一个有效的时间格式");
    }
        }
      

  5.   

    有JDK帮助我就会写,比如知道有Date相关的各种类,但是不记得单词全称怎么写.(哈哈,记性奇差,也比较懒去记),没有JDK帮助文档,就写不出来啦,
    像这种情况,如果我去面试不就翘了?求楼下指点..
    : )