package cn.com.ty.lift.ud.common;

import java.text.ParseException;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.Calendar;
import java.util.Date;

public class TimeUtil {

    /**
     * 
     * 计算两个日期之间相差的天数
     * 
     * @param smdate
     *            较小的时间
     * 
     * @param bdate
     *            较大的时间
     * 
     * @return 相差天数
     * 
     * @throws ParseException
     * 
     */

    public static int daysBetween(Date smdate, Date bdate) throws ParseException

    {

        Calendar cal = Calendar.getInstance();

        cal.setTime(smdate);

        long time1 = cal.getTimeInMillis();

        cal.setTime(bdate);

        long time2 = cal.getTimeInMillis();

        long between_days = (time2 - time1) / (1000 * 3600 * 24);

        return Integer.parseInt(String.valueOf(between_days));

    }

    /**
     * 计算两个时间点的天数差
     * 
     * @param dt1
     *            第一个时间点
     * @param dt2
     *            第二个时间点
     * @return int，即要计算的天数差
     */
    public static int dateDiff(LocalDateTime dt1, LocalDateTime dt2) {
        // 获取第一个时间点的时间戳对应的秒数
        long t1 = dt1.toEpochSecond(ZoneOffset.ofHours(0));
        // 获取第一个时间点在是1970年1月1日后的第几天
        long day1 = t1 / (60 * 60 * 24);
        // 获取第二个时间点的时间戳对应的秒数
        long t2 = dt2.toEpochSecond(ZoneOffset.ofHours(0));
        // 获取第二个时间点在是1970年1月1日后的第几天
        long day2 = t2 / (60 * 60 * 24);
        // 返回两个时间点的天数差
        return (int)(day2 - day1);
    }
}
