JAVA 学习-日期处理

昨日打比赛,发现日期处理使用起来还是不太流畅,总结一下。


获取两个日期相差的天数和月份的最大天数

/**
     * 获取两个日期之间相差的天数
     * 日期格式为
     * @param startStr:开始日期
     * @param endStr:结束日期
     * @param format:格式
     * @return:相差的天数
     * @throws Exception
     */
    public static long getBetweenDate( String startStr, String endStr, String format ) throws Exception {
        //设置转换的日期格式
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        //开始时间
        Date startDate = sdf.parse(startStr);
        //结束时间
        Date endDate = sdf.parse(endStr);
        return (endDate.getTime() - startDate.getTime())/(60*60*24*1000);
    }

    /**
     * 根据年份和月份获取该月的最大天数
     * @param year:年份
     * @param mouth:月份
     * @return:最大天数
     */
    public static int getMaxDateByYM( int year, int mouth ) {
        int[] m = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};//每月的天数
        if ( mouth == 2 && ((year%4 == 0 && year%100 != 0) || year%400 == 0) ) return 29;
        else return m[mouth];
    }

使用

System.out.println(getBetweenDate("20000201", "20000301", "yyyyMMdd"));//输出29
System.out.println(getBetweenDate("2000-02-01", "2000-03-01", "yyyy-MM-dd"));//输出29
System.out.println(getBetweenDate("01-02-2000", "01-03-2000", "dd-MM-yyyy"));//输出29
System.out.println(getMaxDateByYM(2001, 1));//输出31

你可能感兴趣的:(总结)