时间处理,请时间差

package com.isoftstone.pcis.policy.app.payseemoney.utils;


import java.util.Calendar;
import java.util.Date;


/**
 * 日期处理组件类
 * @author Yesic
 * @version 1.0
 * 2009-04-22
 */
public class DateUtils {
/**
* 比较两日期的年份差
* @param src
* @param dst
* @return 年份差值
* @author Yesic
* 2009-04-22
* 描述:默认2008-05-04到2009-05-03不算一年
*/
public static int compareYear(Date src, Date dst){
return compareYear(src, dst, true);
}

/**
* 比较两日期的年份差
* @param src 开始时间
* @param dst 结束时间
* @param todayFlag 是否包含当天[标志]
* @return 年份差值
* @author Yesic
* 2009-04-22
* 描述:todayFlag=false,则2008-05-04到2009-05-03算一年
*/
public static int compareYear(Date src, Date dst, boolean todayFlag){
Calendar srcCal = Calendar.getInstance();
srcCal.setTime(src);
Calendar dstCal = Calendar.getInstance();
dstCal.setTime(dst);

if(todayFlag)
return dstCal.get(Calendar.YEAR) - srcCal.get(Calendar.YEAR) - 
((dstCal.get(Calendar.MONTH) - srcCal.get(Calendar.MONTH)>0)?0:
((dstCal.get(Calendar.MONTH) - srcCal.get(Calendar.MONTH))<0?1:
((dstCal.get(Calendar.DAY_OF_MONTH) - srcCal.get(Calendar.DAY_OF_MONTH))>=0?0:1)
)
);
else
return dstCal.get(Calendar.YEAR) - srcCal.get(Calendar.YEAR) - 
((dstCal.get(Calendar.MONTH) - srcCal.get(Calendar.MONTH)>0)?0:
((dstCal.get(Calendar.MONTH) - srcCal.get(Calendar.MONTH))<0?1:
((dstCal.get(Calendar.DAY_OF_MONTH) - srcCal.get(Calendar.DAY_OF_MONTH))>=-1?0:1)
)
);
}

/**
* 比较两日期的月份差
* @param src
* @param dst
* @return 月份差值
* @author Yesic
* 2009-04-22
*/
public static int compareMonth(Date src, Date dst){
Calendar srcCal = Calendar.getInstance();
srcCal.setTime(src);
Calendar dstCal = Calendar.getInstance();
dstCal.setTime(dst);

return (dstCal.get(Calendar.YEAR) - srcCal.get(Calendar.YEAR))*12 + //年差
(dstCal.get(Calendar.MONTH) - srcCal.get(Calendar.MONTH)) - //月差
((dstCal.get(Calendar.DAY_OF_MONTH) - srcCal.get(Calendar.DAY_OF_MONTH))>=0?0:1);
}

/**
* 比较两日期的日期差
* @param src
* @param dst
* @return 日期差值
* @author Yesic
* 2009-04-22
*/
public static int compareDay(Date src, Date dst){
Calendar srcCal = Calendar.getInstance();
srcCal.setTime(src);
Calendar dstCal = Calendar.getInstance();
dstCal.setTime(dst);

return (int)((dst.getTime() - src.getTime())/1000/60/60/24);
}

/**
* 比较支票审核两日期的日期差
* @param src
* @param dst
* @return 日期差值
* @author Yesic
* 2009-04-22
*/
public static int compareCheckDay(Date src, Date dst){
Calendar srcCal = Calendar.getInstance();
srcCal.setTime(src);
Calendar dstCal = Calendar.getInstance();
dstCal.setTime(dst);
return (int)((dst.getTime() - src.getTime())/1000/60/60/24)+2;
}

/**
* 时间1减去时间2
* @param date1
* @param date2
* @return
*/
public static int d1MinusD2 (Date date1, Date date2) {
    Calendar d1 = Calendar.getInstance();
    Calendar d2 = Calendar.getInstance();
   
    d1.setTime(date1);
    d2.setTime(date2);
   
        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 d1_totalDayOfYear = d1.getActualMaximum(Calendar.DAY_OF_YEAR);
    int d1_dayOfYear = d1.get(Calendar.DAY_OF_YEAR);
   
    int num1=0;
    num1 = d1_totalDayOfYear-d1_dayOfYear;
   
    int d2_totalDayOfYear = d2.getActualMaximum(Calendar.DAY_OF_YEAR);
    int d2_dayOfYear = d2.get(Calendar.DAY_OF_YEAR);
    int num2 = d2_totalDayOfYear-d2_dayOfYear;
   
    if(d1.get(Calendar.YEAR) == d2.get(Calendar.YEAR)){
    return num1-num2;
    }else{
    int count=num1+d2_dayOfYear;
    d1.set(Calendar.YEAR, d1.get(Calendar.YEAR)+1);
    while(d1.get(Calendar.YEAR)!=d2.get(Calendar.YEAR)){
    d1.set(Calendar.YEAR, d1.get(Calendar.YEAR)+1);
        count=count+d1.getActualMaximum(Calendar.DAY_OF_YEAR);
        }
    return count;
    }
    }

public static void main(String[] args){
System.out.println("年差: "+compareYear(new Date(2009, 8, 20), new Date(2010, 9, 10))+" 年");
System.out.println("年差: "+compareYear(new Date(2009, 8, 20), new Date(2010, 6, 10))+" 年");
System.out.println("年差: "+compareYear(new Date(2009, 8, 20), new Date(2010, 8, 10))+" 年");
System.out.println("年差: "+compareYear(new Date(2009, 8, 20), new Date(2010, 8, 20))+" 年");
System.out.println("年差: "+compareYear(new Date(2009, 8, 20), new Date(2010, 8, 28))+" 年");
System.out.println("\n");
System.out.println("月差: "+compareMonth(new Date(2009, 8, 20), new Date(2010, 9, 10))+" 月");
System.out.println("月差: "+compareMonth(new Date(2009, 8, 20), new Date(2010, 6, 10))+" 月");
System.out.println("月差: "+compareMonth(new Date(2009, 8, 20), new Date(2010, 8, 10))+" 月");
System.out.println("月差: "+compareMonth(new Date(2009, 8, 20), new Date(2010, 8, 20))+" 月");
System.out.println("月差: "+compareMonth(new Date(2009, 8, 20), new Date(2010, 8, 28))+" 月");
System.out.println("\n");
System.out.println("日差: "+compareDay(new Date(2009, 8, 20, 14, 30, 36), new Date(2009, 9, 29, 16, 26, 10))+" 天");
System.out.println("日差: "+compareDay(new Date(2009, 8, 20, 14, 30, 36), new Date(2009, 9, 20, 16, 26, 10))+" 天");
System.out.println("日差: "+compareDay(new Date(2009, 8, 20, 14, 30, 36), new Date(2009, 9, 20, 12, 26, 10))+" 天");
System.out.println("日差: "+compareDay(new Date(2009, 8, 20, 14, 30, 36), new Date(2009, 9, 20, 14, 36, 10))+" 天");
System.out.println("日差: "+compareDay(new Date(2009, 8, 20, 14, 30, 36), new Date(2009, 9, 20, 14, 26, 10))+" 天");
System.out.println("日差: "+compareDay(new Date(2009, 8, 20, 14, 30, 36), new Date(2009, 9, 20, 14, 30, 20))+" 天");
System.out.println("日差: "+compareDay(new Date(2009, 8, 20, 14, 30, 36), new Date(2009, 9, 20, 14, 30, 50))+" 天");
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值