比如我是2000-10-20 参加工作,
1\ 如何计算我到现在工作了几年(不满一年不算,应该是5年)
2\ 如何计算我现在工作了几年零几个月(不满一月不算,应该是5年零6个月)请给个详细的方法,谢谢了

解决方案 »

  1.   

    import java.util.*;//import sun.security.action.GetBooleanAction;
    public class Test { /**
     * @param args
     */
    public static void main(String[] args) {
    Calendar calbegin = Calendar.getInstance();
    calbegin.set(2000,10,5);//设置开始日期
    Calendar calend = Calendar.getInstance();
    calend.set(2006,10,5);//设置开始日期
    System.out.println(getWorkYear(calbegin, calend));
    }
    private static String getWorkYear(Calendar begin,Calendar end)
    {
    String str = "";
    if(end.compareTo(begin) < 0)
    {
    str="结束时间应不小于开始时间!";
    }
    else
    {
    if(end.get(Calendar.DAY_OF_YEAR)==begin.get(Calendar.DAY_OF_YEAR))
    {
    //当不足一年时,只显示有几个月
    }
    else{
    //先处理有几年,然后再处理几个月,一下根据你的要求自行判断后用给stt赋值就可以了
    }
    }
    return str;
    }
    }
      

  2.   

    import java.util.*;//import sun.security.action.GetBooleanAction;
    public class Test { /**
     * @param args
     */
    public static void main(String[] args) {
    Calendar calbegin = Calendar.getInstance();
    calbegin.set(2000,10,5);//设置开始日期
    Calendar calend = Calendar.getInstance();
    calend.set(2006,10,5);//设置结束日期
    System.out.println(getWorkYear(calbegin, calend));
    }
    private static String getWorkYear(Calendar begin,Calendar end)
    {
    String str = "";
    if(end.compareTo(begin) < 0)
    {
    str="结束时间应不小于开始时间!";
    }
    else
    {
    if(end.get(Calendar.DAY_OF_YEAR)==begin.get(Calendar.DAY_OF_YEAR))
    {
    //当不足一年时,只显示有几个月
    }
    else{
    //先处理有几年,然后再处理几个月,一下根据你的要求自行判断后用给str赋值就可以了
    }
    }
    return str;
    }
    }
      

  3.   

    谢谢您的回答啊,还是要帮帮忙
    1\ compareTo 这个哪里来的?
    2\ 设置日期能不能用YYYY-MM-DD的形式表示?
      

  4.   

    compareTo是类可提供的方法
    设置日期好像不能用YYYY-MM-DD,你试试吧,你仔细看看java的api类可,里面有详细的说明]
    具体算法你自己按照你的要求写吧,就是几个比较和判断的问题
      

  5.   

    我查了啊,Calendar并没有compareTo的方法,所以程序到了这里就调不通了
      

  6.   

    是你的jdk版本比较低的原因,我这里编译没有问题,你可以找个和你类似的方法,用==试试行吗?
      

  7.   

    我是jdk1.4.2_11的,是1.4.2的最新版本,难道你的是1.5?
      

  8.   

    这样的应该不难吧!
    得到现在时刻的年和月
    /////////////////////////////
            Calendar rightNow = Calendar.getInstance();
            rightNow.setTime(new java.util.Date(System.currentTimeMillis()));
            int nowYear = rightNow.get(Calendar.YEAR);
            int nowMonth = rightNow.get(Calendar.MONTH) + 1;
    ///////////////////////////
    解析 形如"2000-10-20 "或"2000/10/20 ",取出该 年和月为整数值
    // strDate形如 "2000-10-20 " 格式
     String sDate = strDate;
            String sep = " ";
            StringTokenizer st = null;
           
            st = new StringTokenizer(strDate, sep);
            if (st.hasMoreTokens()) {
              sDate = st.nextToken();
            }
            int year = Integer.parseInt(sDate.substring(0, 4));
            int month = Integer.parseInt(sDate.substring(5, 7));