java获取相差时间

一、将指定格式的日期字符串格式化为日期

    /**
     * @param s 字符串内容.
     * @param format 字符串格式.
     * @return 日期
     */
    public static Date getDateFromString(String s, String format) {
        try {
            SimpleDateFormat sdf = new SimpleDateFormat(format);
            return sdf.parse(s);
        } catch (Exception e) {
            return null;
        }
    }

二、将日期格式化为指定的字符串

  /**
     * @param d 日期.
     * @param format 输出字符串格式.
     * @return 日期字符串
     */
    public static String getStringFromDate(Date d, String format) {
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        return sdf.format(d);
    }

三、得到当前的日期字符串

    /**
     * @return 日期字符串
     */
    public static String getDate() {
        return getDate(Calendar.getInstance());
    }

    /**
     * @param calendar 指定的日期.
     * @return 日期字符串
     */
    public static String getDate(Calendar calendar) {
        return getStringFromDate(calendar.getTime(), FORMAT_DATE);
    }

四、得到当前的日期时间字符串


    /**
     * @return 日期时间字符串
     */
    private static final String FORMAT_DATETIME = "yyyy-MM-dd HH:mm:ss";
    public static String getDatetime() {
        Calendar calendar = Calendar.getInstance();
        return getStringFromDate(calendar.getTime(), FORMAT_DATETIME);
    }

三、获取相差时间,精确到分钟.

    /**
     * @param beginTime 开始时间.
     * @param endTime 结束时间.
     * @return 相差时间
     */
    private static final String FORMAT_DATETIME = "yyyy-MM-dd HH:mm:ss";
    public static String getDiffTime(String beginTime, String endTime) {
        try {
            if (endTime == null || endTime.length() == 0) {
                endTime = getDatetime();
            }
            Date eTime = getDateFromString(endTime, FORMAT_DATETIME);
            Date bTime = getDateFromString(beginTime, FORMAT_DATETIME);
            long time = eTime.getTime() - bTime.getTime();
            StringBuffer sb = new StringBuffer();
            int day = (int) Math.floor(time / (24 * 3600000));
            if (day > 0) {
                sb.append(day).append("天");
            }
            time = time % (24 * 3600000);
            int hour = Cast.to(Math.floor(time / 3600000), 0);
            if (hour > 0) {
                sb.append(hour).append("小时");
            }
            time = time % 3600000;
            int minute = Cast.to(Math.ceil(time / 60000), 0);
            if (minute > 0) {
                sb.append(minute).append("分钟");
            }
            return sb.toString();
        } catch (Exception e) {
            e.printStackTrace();
            return "";
        }
    }

四、当得到两个日期相差天数

    /**
     * 当前日期与参数传递的日期的相差天数.<br>
     * <br>
     * @param dateinfo 指定的日期.
     * @return 相差的天数
     */
    public static int selectDateDiff(String dateinfo) {
        return selectDateDiff(dateinfo, getDate());
    }

    /**
     * 当得到两个日期相差天数.<br>
     * <br>
     * @param first 第一个日期.
     * @param second 第二个日期.
     * @return 相差的天数
     */
    public static int selectDateDiff(String first, String second) {
        int dif = 0;
        try {
            Date fDate = getDateFromString(first, FORMAT_DATE);
            Date sDate = getDateFromString(second, FORMAT_DATE);
            dif = (int) ((fDate.getTime() - sDate.getTime()) / 86400000);
        } catch (Exception e) {
            dif = 0;
        }
        return dif;
    }

五、相差的小时数

     import java.math.BigDecimal;
     public static double getDiffHoure(String beginTime, String endTime) {
        double dif = 0.00;
        try {
            Date eDatetime = DateUtils.getDateFromString(endTime,
                "yyyy-MM-dd HH:mm:ss");
            Date bDatetime = DateUtils.getDateFromString(beginTime,
                "yyyy-MM-dd HH:mm:ss");
            double ed = eDatetime.getTime();
            double sd = bDatetime.getTime();
            BigDecimal et = new BigDecimal(ed / 1000 / 3600 - sd / 1000 / 3600);
            dif = et.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
        } catch (Exception e) {
            dif = 0;
        }
        return dif;
    }

六、获取相差的秒数

    /**
     * @param beginTime     开始时间
     * @param periodSecond  相差秒数
     * @return
     */
    public static String getSecondTime(String beginTime, int periodSecond) {
        String dif = "";
        try {
            Date bTime = DateUtils.getDateFromString(beginTime,
                "yyyy-MM-dd HH:mm:ss");
            double bt = bTime.getTime();
            bt = bt + periodSecond;
            Date dt = getDateFromString(String.valueOf(bt),  "yyyy-MM-dd HH:mm:ss");
            dif = getStringFromDate(dt, "yyyy-MM-dd HH:mm:ss");
        } catch (Exception e) {
            dif = "";
        }
        return dif;
    }

七、取得两日期间的月份差数

    public static int getMonthDiff(String startDate, String endDate) {
        String[] startArray = startDate.split("-");
        String[] endArray = endDate.split("-");
        int startYear = Integer.parseInt(startArray[0]);
        int startMonth = Integer.parseInt(startArray[1]);
        int endYear = Integer.parseInt(endArray[0]);
        int endMonth = Integer.parseInt(endArray[1]);
        return Math.abs((endYear - startYear) * 12 + endMonth - startMonth);
    }

猜你喜欢

转载自blog.csdn.net/qq_35029061/article/details/82930859