写一个函数:输入任意两个字符串,这两个字符串必须满足("YYYY-MM-DD")格式,返回这两个字符串为时间的相差天数.
另注:不允许用任何日期函数,必须考虑闰年,大月,小月.

解决方案 »

  1.   

    package squall;import java.util.StringTokenizer;public class DateDiff
    {
    public static void main(String[] args)
    {
    MyDate op1 = new MyDate("2009-01-01");
    MyDate op2 = new MyDate("2008-03-21");
    System.out.println(op1.diffDays(op2));
    }
    }class MyDate
    {
    public MyDate(String str)
    {
    StringTokenizer tokenizer = new StringTokenizer(str, "-");
    year = Integer.parseInt(tokenizer.nextToken());
    month = Integer.parseInt(tokenizer.nextToken());
    day = Integer.parseInt(tokenizer.nextToken());
    } public long diffDays(MyDate other)
    {
    return this.diffBC() - other.diffBC();
    } private long diffBC()
    {
    long res = 0;
    for (int i = 1; i < year; ++i)
    {
    if (i % 400 == 0 || i % 4 == 0 && i % 100 != 0)
    res += 366;
    else
    res += 365;
    }
    for (int i = 0; i < month -1; ++i)
    {
    res += dayinMonth[i];
    if (i == 1 && (year % 400 == 0 || year % 4 == 0 && year % 100 != 0))
    ++res;
    }
    res += (day - 1);
    return res; } private static int[] dayinMonth = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31,
    30, 31 }; private int year; private int month; private int day;
    }
      

  2.   

    忘了jdk版本低的话
    long res = 0;
    ->
    long res = 0L;
      

  3.   

    我出一道面试题,如何用c语言实现ping命令,别拿砖拍我。怕怕
      

  4.   

        public static int daysBetween(Date date1, Date date2) {
            final long ONE_DAY = 24 * 60 * 60 * 1000;
            return (int) Math.abs((date1.getTime() - date2.getTime()) / ONE_DAY);
        }这样多简单啊!,本就有个Date类,还得非写一个MyDate类去模拟这个Date类。这样的面试题真想不通面试官真么考虑的。