java 日期時間工具類

package org.apache.pwd.util;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class DateFormatUtil {

    /** 12小時制 */
    private static final String DATE_FORMAT_12_HOUR = "yyyy/MM/dd hh:mm:ss";

    /** 24小時制 */
    private static final String DATE_FORMAT_24_HOUR = "yyyy/MM/dd HH:mm:ss";

    /**
     * 根據格式返回日期字符串
     *
     * @param dateInfo
     *            日期
     * @param stringFormat
     *            格式化字符串
     * @return 日期字符串
     */
    public static String getStringDate(Date dateInfo, String stringFormat) {

        if(isNullOrEmpty(stringFormat)){
            return null;
        }

        SimpleDateFormat sdf = new SimpleDateFormat(stringFormat);
        String formated = sdf.format(dateInfo);

        return formated;
    }

    /**
     * 根據格式返回日期
     *
     * @param dateInfo
     *            日期字符串
     * @param stringFormat
     *            格式化字符串
     * @return 日期
     * @throws Exception
     *             例外
     */
    public static Date getFormatDate(String dateInfo, String stringFormat) throws Exception {

        if (isNullOrEmpty(stringFormat)) {
            return null;
        }

        SimpleDateFormat sdf = new SimpleDateFormat(stringFormat);
        Date formated = sdf.parse(dateInfo);

        return formated;
    }

    /**
     * 根據年月日生成Calendar對象
     *
     * @param year
     *            年
     * @param month
     *            月
     * @param day
     *            日
     * @return Calendar對象
     */
    public static Calendar createCalendar(int year, int month, int day) {
        Calendar cal = Calendar.getInstance();
        if (year < 100) {
            year = 2000 + year;
        }

        cal.set(year, month - 1, day);
        return cal;
    }

    /**
     * 根據日期生成Calendar對象
     *
     * @param date
     *            日期
     * @return Calendar對象
     */
    public static Calendar createCalendar(int date) {
        int year = date / 1000;
        int month = (date % 10000) / 100;
        int day = date % 100;

        Calendar cal = Calendar.getInstance();
        cal.set(year, month - 1, day);
        return cal;
    }

    /**
     * 返回年份
     *
     * @return 年份
     * @throws Exception
     *             例外
     */
    public static Integer getNowYear() throws Exception {
        Calendar cal = Calendar.getInstance();
        int year = cal.get(Calendar.YEAR);

        return year;
    }

    /**
     * 返回月份
     *
     * @return 月份
     * @throws Exception
     *             例外
     */
    public static Integer getNowMonth() throws Exception {
        Calendar cal = Calendar.getInstance();
        int month = cal.get(Calendar.MONTH) + 1;

        return month;
    }

    /**
     * 返回當前日期
     *
     * @return 日期
     */
    public static Integer getNowDay() {
        Calendar cal = Calendar.getInstance();
        int day = cal.get(Calendar.DAY_OF_MONTH);
        return day;
    }

    /**
     * 返回某月份的第一天
     *
     * @param year
     *            年
     * @param month
     *            月
     * @return 某月份的第一天
     */
    public static Integer getFirstDayOfMonth(int year, int month) {
        Calendar cal = createCalendar(year, month, 1);
        int day = cal.get(Calendar.DAY_OF_MONTH);

        return day;
    }

    /**
     * 返回某月份的最後一天
     *
     * @param year
     *            年
     * @param month
     *            月
     * @return 某月份的最後一天
     */
    public static Integer getLastDayOfMonth(int year, int month) {
        Calendar cal = createCalendar(year, month, 1);
        int lastDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH);

        return lastDay;
    }

    /**
     * 計算兩個日期之間相差的天數
     *
     * @param startDate
     *            開始日期
     * @param endDate
     *            結束日期
     * @return 兩個日期之間相差的天數
     */
    public static Integer daysBetweenData(Integer startDate, Integer endDate) {
        if(startDate == null || endDate == null){
            return null;
        }

        Calendar startCal = createCalendar(startDate);
        Calendar endCal = createCalendar(endDate);

        Calendar cal = null;
        if (startCal.before(endCal)) {
            cal = startCal;
            startCal = endCal;
            endCal = cal;
        }

        Long lg = (startCal.getTimeInMillis() - endCal.getTimeInMillis()) / 1000 / 60 / 60 / 24;
        return lg.intValue();

    }

    /**
     * 判斷是否爲閏年
     *
     * @param obj
     *            輸入年份
     * @return 是否爲閏年
     * @throws Exception
     *             例外
     */
    public static <T> boolean isLeapYear(T obj) throws Exception {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
        Calendar calendar = Calendar.getInstance();
        int year = 0;
        if (obj instanceof String) {
            Date dateInfo = sdf.parse((String) obj);
            calendar.setTime(dateInfo);

            year = calendar.get(Calendar.YEAR);
        } else if (obj instanceof Date) {
            calendar.setTime((Date) obj);

            year = calendar.get(Calendar.YEAR);
        }else{
            return false;
        }

        if ((year % 4 == 0 && year % 100 != 0) || (year % 100 == 0 && year % 400 == 0)) {
            System.out.println("是閏年");
            return true;
        }

        System.out.println("不是閏年");
        return false;
    }

    /**
     *
     *
     * @param stringFormat
     * @return
     */
    public static boolean isNullOrEmpty(String stringFormat) {
        return (stringFormat == null || stringFormat.length() == 0) ? true : false;
    }

    public static void main(String[] args) throws Exception {

        String dateInfo = "2014/12/12";

        Calendar cal = Calendar.getInstance();
        cal.setTime(new SimpleDateFormat("yyyy/MM/dd").parse(dateInfo));

        // isLeapYear(cal.getTime());

        System.out.println(getNowDay());

        System.out.println(getFirstDayOfMonth(2014, 12));

        System.out.println(getLastDayOfMonth(2014, 9));

        // System.out.println(getStringDate(new Date(), "yyyy/MM/dd HH:mm:ss"));

        System.out.println(daysBetweenData(20140303, 20140304));
    }
}
相關文章
相關標籤/搜索