`
lzstone
  • 浏览: 92645 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

常用的时间方法DateUtil

    博客分类:
  • java
阅读更多

import java.text.*;
import java.util.*;

public class DateUtil {
    private static final int[] dayArray = new int[] { 31, 28, 31, 30, 31, 30,
            31, 31, 30, 31, 30, 31 };

    private static SimpleDateFormat sdf = new SimpleDateFormat();

    public static synchronized Calendar getCalendar() {
        return GregorianCalendar.getInstance();
    }

    /**
     * @return String
     */
    public static synchronized String getDateMilliFormat() {
        Calendar cal = Calendar.getInstance();
        return getDateMilliFormat(cal);
    }

    /**
     * @param cal
     * @return String
     */
    public static synchronized String getDateMilliFormat(java.util.Calendar cal) {
        String pattern = "yyyy-MM-dd HH:mm:ss,SSS";
        return getDateFormat(cal, pattern);
    }

    /**
     * @param date
     * @return String
     */
    public static synchronized String getDateMilliFormat(java.util.Date date) {
        String pattern = "yyyy-MM-dd HH:mm:ss,SSS";
        return getDateFormat(date, pattern);
    }

    /**
     * @param strDate
     * @return java.util.Calendar
     */
    public static synchronized Calendar parseCalendarMilliFormat(String strDate) {
        String pattern = "yyyy-MM-dd HH:mm:ss,SSS";
        return parseCalendarFormat(strDate, pattern);
    }

    /**
     * @param strDate
     * @return java.util.Date
     */
    public static synchronized Date parseDateMilliFormat(String strDate) {
        String pattern = "yyyy-MM-dd HH:mm:ss,SSS";
        return parseDateFormat(strDate, pattern);
    }

    /**
     * @return String
     */
    public static synchronized String getDateSecondFormat() {
        Calendar cal = Calendar.getInstance();
        return getDateSecondFormat(cal);
    }

    /**
     * @param cal
     * @return String
     */
    public static synchronized String getDateSecondFormat(java.util.Calendar cal) {
        String pattern = "yyyy-MM-dd HH:mm:ss";
        return getDateFormat(cal, pattern);
    }

    /**
     * @param date
     * @return String
     */
    public static synchronized String getDateSecondFormat(java.util.Date date) {
        String pattern = "yyyy-MM-dd HH:mm:ss";
        return getDateFormat(date, pattern);
    }

    /**
     * @param strDate
     * @return java.util.Calendar
     */
    public static synchronized Calendar parseCalendarSecondFormat(String strDate) {
        String pattern = "yyyy-MM-dd HH:mm:ss";
        return parseCalendarFormat(strDate, pattern);
    }

    /**
     * @param strDate
     * @return java.util.Date
     */
    public static synchronized Date parseDateSecondFormat(String strDate) {
        String pattern = "yyyy-MM-dd HH:mm:ss";
        return parseDateFormat(strDate, pattern);
    }

    /**
     * @return String
     */
    public static synchronized String getDateMinuteFormat() {
        Calendar cal = Calendar.getInstance();
        return getDateMinuteFormat(cal);
    }

    /**
     * @param cal
     * @return String
     */
    public static synchronized String getDateMinuteFormat(java.util.Calendar cal) {
        String pattern = "yyyy-MM-dd HH:mm";
        return getDateFormat(cal, pattern);
    }

    /**
     * @param date
     * @return String
     */
    public static synchronized String getDateMinuteFormat(java.util.Date date) {
        String pattern = "yyyy-MM-dd HH:mm";
        return getDateFormat(date, pattern);
    }

    /**
     * @param strDate
     * @return java.util.Calendar
     */
    public static synchronized Calendar parseCalendarMinuteFormat(String strDate) {
        String pattern = "yyyy-MM-dd HH:mm";
        return parseCalendarFormat(strDate, pattern);
    }

    /**
     * @param strDate
     * @return java.util.Date
     */
    public static synchronized Date parseDateMinuteFormat(String strDate) {
        String pattern = "yyyy-MM-dd HH:mm";
        return parseDateFormat(strDate, pattern);
    }

    /**
     * @return String
     */
    public static synchronized String getDateDayFormat() {
        Calendar cal = Calendar.getInstance();
        return getDateDayFormat(cal);
    }

    /**
     * @param cal
     * @return String
     */
    public static synchronized String getDateDayFormat(java.util.Calendar cal) {
        String pattern = "yyyy-MM-dd";
        return getDateFormat(cal, pattern);
    }

    /**
     * @param date
     * @return String
     */
    public static synchronized String getDateDayFormat(java.util.Date date) {
        String pattern = "yyyy-MM-dd";
        return getDateFormat(date, pattern);
    }

    /**
     * @param strDate
     * @return java.util.Calendar
     */
    public static synchronized Calendar parseCalendarDayFormat(String strDate) {
        String pattern = "yyyy-MM-dd";
        return parseCalendarFormat(strDate, pattern);
    }

    /**
     * @param strDate
     * @return java.util.Date
     */
    public static synchronized Date parseDateDayFormat(String strDate) {
        String pattern = "yyyy-MM-dd";
        return parseDateFormat(strDate, pattern);
    }

    /**
     * @return String
     */
    public static synchronized String getDateFileFormat() {
        Calendar cal = Calendar.getInstance();
        return getDateFileFormat(cal);
    }

    /**
     * @param cal
     * @return String
     */
    public static synchronized String getDateFileFormat(java.util.Calendar cal) {
        String pattern = "yyyy-MM-dd_HH-mm-ss";
        return getDateFormat(cal, pattern);
    }

    /**
     * @param date
     * @return String
     */
    public static synchronized String getDateFileFormat(java.util.Date date) {
        String pattern = "yyyy-MM-dd_HH-mm-ss";
        return getDateFormat(date, pattern);
    }

    /**
     * @param strDate
     * @return java.util.Calendar
     */
    public static synchronized Calendar parseCalendarFileFormat(String strDate) {
        String pattern = "yyyy-MM-dd_HH-mm-ss";
        return parseCalendarFormat(strDate, pattern);
    }

    /**
     * @param strDate
     * @return java.util.Date
     */
    public static synchronized Date parseDateFileFormat(String strDate) {
        String pattern = "yyyy-MM-dd_HH-mm-ss";
        return parseDateFormat(strDate, pattern);
    }

    /**
     * @return String
     */
    public static synchronized String getDateW3CFormat() {
        Calendar cal = Calendar.getInstance();
        return getDateW3CFormat(cal);
    }

    /**
     * @param cal
     * @return String
     */
    public static synchronized String getDateW3CFormat(java.util.Calendar cal) {
        String pattern = "yyyy-MM-dd HH:mm:ss";
        return getDateFormat(cal, pattern);
    }

    /**
     * @param date
     * @return String
     */
    public static synchronized String getDateW3CFormat(java.util.Date date) {
        String pattern = "yyyy-MM-dd HH:mm:ss";
        return getDateFormat(date, pattern);
    }

    /**
     * @param strDate
     * @return java.util.Calendar
     */
    public static synchronized Calendar parseCalendarW3CFormat(String strDate) {
        String pattern = "yyyy-MM-dd HH:mm:ss";
        return parseCalendarFormat(strDate, pattern);
    }

    /**
     * @param strDate
     * @return java.util.Date
     */
    public static synchronized Date parseDateW3CFormat(String strDate) {
        String pattern = "yyyy-MM-dd HH:mm:ss";
        return parseDateFormat(strDate, pattern);
    }

    /**
     * @param cal
     * @return String
     */
    public static synchronized String getDateFormat(java.util.Calendar cal) {
        String pattern = "yyyy-MM-dd HH:mm:ss";
        return getDateFormat(cal, pattern);
    }

    /**
     * @param date
     * @return String
     */
    public static synchronized String getDateFormat(java.util.Date date) {
        String pattern = "yyyy-MM-dd HH:mm:ss";
        return getDateFormat(date, pattern);
    }

    /**
     * @param strDate
     * @return java.util.Calendar
     */
    public static synchronized Calendar parseCalendarFormat(String strDate) {
        String pattern = "yyyy-MM-dd HH:mm:ss";
        return parseCalendarFormat(strDate, pattern);
    }

    /**
     * @param strDate
     * @return java.util.Date
     */
    public static synchronized Date parseDateFormat(String strDate) {
        String pattern = "yyyy-MM-dd HH:mm:ss";
        return parseDateFormat(strDate, pattern);
    }

    /**
     * @param cal
     * @param pattern
     * @return String
     */
    public static synchronized String getDateFormat(java.util.Calendar cal,
            String pattern) {
        return getDateFormat(cal.getTime(), pattern);
    }

    /**
     * @param date
     * @param pattern
     * @return String
     */
    public static synchronized String getDateFormat(java.util.Date date,
            String pattern) {
        synchronized (sdf) {
            String str = null;
            sdf.applyPattern(pattern);
            str = sdf.format(date);
            return str;
        }
    }

    /**
     * @param strDate
     * @param pattern
     * @return java.util.Calendar
     */
    public static synchronized Calendar parseCalendarFormat(String strDate,
            String pattern) {
        synchronized (sdf) {
            Calendar cal = null;
            sdf.applyPattern(pattern);
            try {
                sdf.parse(strDate);
                cal = sdf.getCalendar();
            } catch (Exception e) {
            }
            return cal;
        }
    }

    /**
     * @param strDate
     * @param pattern
     * @return java.util.Date
     */
    public static synchronized Date parseDateFormat(String strDate,
            String pattern) {
        synchronized (sdf) {
            Date date = null;
            sdf.applyPattern(pattern);
            try {
                date = sdf.parse(strDate);
            } catch (Exception e) {
            }
            return date;
        }
    }

    public static synchronized int getLastDayOfMonth(int month) {
        if (month < 1 || month > 12) {
            return -1;
        }
        int retn = 0;
        if (month == 2) {
            if (isLeapYear()) {
                retn = 29;
            } else {
                retn = dayArray[month - 1];
            }
        } else {
            retn = dayArray[month - 1];
        }
        return retn;
    }

    public static synchronized int getLastDayOfMonth(int year, int month) {
        if (month < 1 || month > 12) {
            return -1;
        }
        int retn = 0;
        if (month == 2) {
            if (isLeapYear(year)) {
                retn = 29;
            } else {
                retn = dayArray[month - 1];
            }
        } else {
            retn = dayArray[month - 1];
        }
        return retn;
    }

    public static synchronized boolean isLeapYear() {
        Calendar cal = Calendar.getInstance();
        int year = cal.get(Calendar.YEAR);
        return isLeapYear(year);
    }

    public static synchronized boolean isLeapYear(int year) {
        /**
         * 详细设计: 1.被400整除是闰年,否则: 2.不能被4整除则不是闰年 3.能被4整除同时不能被100整除则是闰年
         * 3.能被4整除同时能被100整除则不是闰年
         */
        if ((year % 400) == 0)
            return true;
        else if ((year % 4) == 0) {
            if ((year % 100) == 0)
                return false;
            else
                return true;
        } else
            return false;
    }

    /**
     * 判断指定日期的年份是否是闰年
     *
     * @param date
     *            指定日期。
     * @return 是否闰年
     */
    public static synchronized boolean isLeapYear(java.util.Date date) {
        /**
         * 详细设计: 1.被400整除是闰年,否则: 2.不能被4整除则不是闰年 3.能被4整除同时不能被100整除则是闰年
         * 3.能被4整除同时能被100整除则不是闰年
         */
        // int year = date.getYear();
        GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();
        gc.setTime(date);
        int year = gc.get(Calendar.YEAR);
        return isLeapYear(year);
    }

    public static synchronized boolean isLeapYear(java.util.Calendar gc) {
        /**
         * 详细设计: 1.被400整除是闰年,否则: 2.不能被4整除则不是闰年 3.能被4整除同时不能被100整除则是闰年
         * 3.能被4整除同时能被100整除则不是闰年
         */
        int year = gc.get(Calendar.YEAR);
        return isLeapYear(year);
    }

    /**
     * 得到指定日期的前一个工作日
     *
     * @param date
     *            指定日期。
     * @return 指定日期的前一个工作日
     */
    public static synchronized java.util.Date getPreviousWeekDay(
            java.util.Date date) {
        {
            /**
             * 详细设计: 1.如果date是星期日,则减3天 2.如果date是星期六,则减2天 3.否则减1天
             */
            GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();
            gc.setTime(date);
            return getPreviousWeekDay(gc);
            // switch ( gc.get( Calendar.DAY_OF_WEEK ) )
            // {
            // case ( Calendar.MONDAY ):
            // gc.add( Calendar.DATE, -3 );
            // break;
            // case ( Calendar.SUNDAY ):
            // gc.add( Calendar.DATE, -2 );
            // break;
            // default:
            // gc.add( Calendar.DATE, -1 );
            // break;
            // }
            // return gc.getTime();
        }
    }

    public static synchronized java.util.Date getPreviousWeekDay(
            java.util.Calendar gc) {
        {
            /**
             * 详细设计: 1.如果date是星期日,则减3天 2.如果date是星期六,则减2天 3.否则减1天
             */
            switch (gc.get(Calendar.DAY_OF_WEEK)) {
            case (Calendar.MONDAY    ):
                gc.add(Calendar.DATE, -3);
                break;
            case (Calendar.SUNDAY    ):
                gc.add(Calendar.DATE, -2);
                break;
            default:
                gc.add(Calendar.DATE, -1);
                break;
            }
            return gc.getTime();
        }
    }

    /**
     * 得到指定日期的后一个工作日
     *
     * @param date
     *            指定日期。
     * @return 指定日期的后一个工作日
     */
    public static synchronized java.util.Date getNextWeekDay(java.util.Date date) {
        /**
         * 详细设计: 1.如果date是星期五,则加3天 2.如果date是星期六,则加2天 3.否则加1天
         */
        GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();
        gc.setTime(date);
        switch (gc.get(Calendar.DAY_OF_WEEK)) {
        case (Calendar.FRIDAY    ):
            gc.add(Calendar.DATE, 3);
            break;
        case (Calendar.SATURDAY    ):
            gc.add(Calendar.DATE, 2);
            break;
        default:
            gc.add(Calendar.DATE, 1);
            break;
        }
        return gc.getTime();
    }

    public static synchronized java.util.Calendar getNextWeekDay(
            java.util.Calendar gc) {
        /**
         * 详细设计: 1.如果date是星期五,则加3天 2.如果date是星期六,则加2天 3.否则加1天
         */
        switch (gc.get(Calendar.DAY_OF_WEEK)) {
        case (Calendar.FRIDAY    ):
            gc.add(Calendar.DATE, 3);
            break;
        case (Calendar.SATURDAY    ):
            gc.add(Calendar.DATE, 2);
            break;
        default:
            gc.add(Calendar.DATE, 1);
            break;
        }
        return gc;
    }

    /**
     * 取得指定日期的下一个月的最后一天
     *
     * @param date
     *            指定日期。
     * @return 指定日期的下一个月的最后一天
     */
    public static synchronized java.util.Date getLastDayOfNextMonth(
            java.util.Date date) {
        /**
         * 详细设计: 1.调用getNextMonth设置当前时间 2.以1为基础,调用getLastDayOfMonth
         */
        GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();
        gc.setTime(date);
        gc.setTime(DateUtil.getNextMonth(gc.getTime()));
        gc.setTime(DateUtil.getLastDayOfMonth(gc.getTime()));
        return gc.getTime();
    }

    /**
     * 取得指定日期的下一个星期的最后一天
     *
     * @param date
     *            指定日期。
     * @return 指定日期的下一个星期的最后一天
     */
    public static synchronized java.util.Date getLastDayOfNextWeek(
            java.util.Date date) {
        /**
         * 详细设计: 1.调用getNextWeek设置当前时间 2.以1为基础,调用getLastDayOfWeek
         */
        GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();
        gc.setTime(date);
        gc.setTime(DateUtil.getNextWeek(gc.getTime()));
        gc.setTime(DateUtil.getLastDayOfWeek(gc.getTime()));
        return gc.getTime();
    }

    /**
     * 取得指定日期的下一个月的第一天
     *
     * @param date
     *            指定日期。
     * @return 指定日期的下一个月的第一天
     */
    public static synchronized java.util.Date getFirstDayOfNextMonth(
            java.util.Date date) {
        /**
         * 详细设计: 1.调用getNextMonth设置当前时间 2.以1为基础,调用getFirstDayOfMonth
         */
        GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();
        gc.setTime(date);
        gc.setTime(DateUtil.getNextMonth(gc.getTime()));
        gc.setTime(DateUtil.getFirstDayOfMonth(gc.getTime()));
        return gc.getTime();
    }

    public static synchronized java.util.Calendar getFirstDayOfNextMonth(
            java.util.Calendar gc) {
        /**
         * 详细设计: 1.调用getNextMonth设置当前时间 2.以1为基础,调用getFirstDayOfMonth
         */
        gc.setTime(DateUtil.getNextMonth(gc.getTime()));
        gc.setTime(DateUtil.getFirstDayOfMonth(gc.getTime()));
        return gc;
    }

    /**
     * 取得指定日期的下一个星期的第一天
     *
     * @param date
     *            指定日期。
     * @return 指定日期的下一个星期的第一天
     */
    public static synchronized java.util.Date getFirstDayOfNextWeek(
            java.util.Date date) {
        /**
         * 详细设计: 1.调用getNextWeek设置当前时间 2.以1为基础,调用getFirstDayOfWeek
         */
        GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();
        gc.setTime(date);
        gc.setTime(DateUtil.getNextWeek(gc.getTime()));
        gc.setTime(DateUtil.getFirstDayOfWeek(gc.getTime()));
        return gc.getTime();
    }

    public static synchronized java.util.Calendar getFirstDayOfNextWeek(
            java.util.Calendar gc) {
        /**
         * 详细设计: 1.调用getNextWeek设置当前时间 2.以1为基础,调用getFirstDayOfWeek
         */
        gc.setTime(DateUtil.getNextWeek(gc.getTime()));
        gc.setTime(DateUtil.getFirstDayOfWeek(gc.getTime()));
        return gc;
    }

    /**
     * 取得指定日期的下一个月
     *
     * @param date
     *            指定日期。
     * @return 指定日期的下一个月
     */
    public static synchronized java.util.Date getNextMonth(java.util.Date date) {
        /**
         * 详细设计: 1.指定日期的月份加1
         */
        GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();
        gc.setTime(date);
        gc.add(Calendar.MONTH, 1);
        return gc.getTime();
    }

    public static synchronized java.util.Calendar getNextMonth(
            java.util.Calendar gc) {
        /**
         * 详细设计: 1.指定日期的月份加1
         */
        gc.add(Calendar.MONTH, 1);
        return gc;
    }

    /**
     * 取得指定日期的下一天
     *
     * @param date
     *            指定日期。
     * @return 指定日期的下一天
     */
    public static synchronized java.util.Date getNextDay(java.util.Date date) {
        /**
         * 详细设计: 1.指定日期加1天
         */
        GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();
        gc.setTime(date);
        gc.add(Calendar.DATE, 1);
        return gc.getTime();
    }

    public static synchronized java.util.Calendar getNextDay(
            java.util.Calendar gc) {
        /**
         * 详细设计: 1.指定日期加1天
         */
        gc.add(Calendar.DATE, 1);
        return gc;
    }

    /**
     * 取得指定日期的下一个星期
     *
     * @param date
     *            指定日期。
     * @return 指定日期的下一个星期
     */
    public static synchronized java.util.Date getNextWeek(java.util.Date date) {
        /**
         * 详细设计: 1.指定日期加7天
         */
        GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();
        gc.setTime(date);
        gc.add(Calendar.DATE, 7);
        return gc.getTime();
    }

    public static synchronized java.util.Calendar getNextWeek(
            java.util.Calendar gc) {
        /**
         * 详细设计: 1.指定日期加7天
         */
        gc.add(Calendar.DATE, 7);
        return gc;
    }

    /**
     * 取得指定日期的所处星期的最后一天
     *
     * @param date
     *            指定日期。
     * @return 指定日期的所处星期的最后一天
     */
    public static synchronized java.util.Date getLastDayOfWeek(
            java.util.Date date) {
        /**
         * 详细设计: 1.如果date是星期日,则加6天 2.如果date是星期一,则加5天 3.如果date是星期二,则加4天
         * 4.如果date是星期三,则加3天 5.如果date是星期四,则加2天 6.如果date是星期五,则加1天
         * 7.如果date是星期六,则加0天
         */
        GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();
        gc.setTime(date);
        switch (gc.get(Calendar.DAY_OF_WEEK)) {
        case (Calendar.SUNDAY  ):
            gc.add(Calendar.DATE, 6);
            break;
        case (Calendar.MONDAY  ):
            gc.add(Calendar.DATE, 5);
            break;
        case (Calendar.TUESDAY  ):
            gc.add(Calendar.DATE, 4);
            break;
        case (Calendar.WEDNESDAY  ):
            gc.add(Calendar.DATE, 3);
            break;
        case (Calendar.THURSDAY  ):
            gc.add(Calendar.DATE, 2);
            break;
        case (Calendar.FRIDAY  ):
            gc.add(Calendar.DATE, 1);
            break;
        case (Calendar.SATURDAY  ):
            gc.add(Calendar.DATE, 0);
            break;
        }
        return gc.getTime();
    }

    /**
     * 取得指定日期的所处星期的第一天
     *
     * @param date
     *            指定日期。
     * @return 指定日期的所处星期的第一天
     */
    public static synchronized java.util.Date getFirstDayOfWeek(
            java.util.Date date) {
        /**
         * 详细设计: 1.如果date是星期日,则减0天 2.如果date是星期一,则减1天 3.如果date是星期二,则减2天
         * 4.如果date是星期三,则减3天 5.如果date是星期四,则减4天 6.如果date是星期五,则减5天
         * 7.如果date是星期六,则减6天
         */
        GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();
        gc.setTime(date);
        switch (gc.get(Calendar.DAY_OF_WEEK)) {
        case (Calendar.SUNDAY  ):
            gc.add(Calendar.DATE, 0);
            break;
        case (Calendar.MONDAY  ):
            gc.add(Calendar.DATE, -1);
            break;
        case (Calendar.TUESDAY  ):
            gc.add(Calendar.DATE, -2);
            break;
        case (Calendar.WEDNESDAY  ):
            gc.add(Calendar.DATE, -3);
            break;
        case (Calendar.THURSDAY  ):
            gc.add(Calendar.DATE, -4);
            break;
        case (Calendar.FRIDAY  ):
            gc.add(Calendar.DATE, -5);
            break;
        case (Calendar.SATURDAY  ):
            gc.add(Calendar.DATE, -6);
            break;
        }
        return gc.getTime();
    }

    public static synchronized java.util.Calendar getFirstDayOfWeek(
            java.util.Calendar gc) {
        /**
         * 详细设计: 1.如果date是星期日,则减0天 2.如果date是星期一,则减1天 3.如果date是星期二,则减2天
         * 4.如果date是星期三,则减3天 5.如果date是星期四,则减4天 6.如果date是星期五,则减5天
         * 7.如果date是星期六,则减6天
         */
        switch (gc.get(Calendar.DAY_OF_WEEK)) {
        case (Calendar.SUNDAY  ):
            gc.add(Calendar.DATE, 0);
            break;
        case (Calendar.MONDAY  ):
            gc.add(Calendar.DATE, -1);
            break;
        case (Calendar.TUESDAY  ):
            gc.add(Calendar.DATE, -2);
            break;
        case (Calendar.WEDNESDAY  ):
            gc.add(Calendar.DATE, -3);
            break;
        case (Calendar.THURSDAY  ):
            gc.add(Calendar.DATE, -4);
            break;
        case (Calendar.FRIDAY  ):
            gc.add(Calendar.DATE, -5);
            break;
        case (Calendar.SATURDAY  ):
            gc.add(Calendar.DATE, -6);
            break;
        }
        return gc;
    }

    /**
     * 取得指定日期的所处月份的最后一天
     *
     * @param date
     *            指定日期。
     * @return 指定日期的所处月份的最后一天
     */
    public static synchronized java.util.Date getLastDayOfMonth(
            java.util.Date date) {
        /**
         * 详细设计: 1.如果date在1月,则为31日 2.如果date在2月,则为28日 3.如果date在3月,则为31日
         * 4.如果date在4月,则为30日 5.如果date在5月,则为31日 6.如果date在6月,则为30日
         * 7.如果date在7月,则为31日 8.如果date在8月,则为31日 9.如果date在9月,则为30日
         * 10.如果date在10月,则为31日 11.如果date在11月,则为30日 12.如果date在12月,则为31日
         * 1.如果date在闰年的2月,则为29日
         */
        GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();
        gc.setTime(date);
        switch (gc.get(Calendar.MONTH)) {
        case 0:
            gc.set(Calendar.DAY_OF_MONTH, 31);
            break;
        case 1:
            gc.set(Calendar.DAY_OF_MONTH, 28);
            break;
        case 2:
            gc.set(Calendar.DAY_OF_MONTH, 31);
            break;
        case 3:
            gc.set(Calendar.DAY_OF_MONTH, 30);
            break;
        case 4:
            gc.set(Calendar.DAY_OF_MONTH, 31);
            break;
        case 5:
            gc.set(Calendar.DAY_OF_MONTH, 30);
            break;
        case 6:
            gc.set(Calendar.DAY_OF_MONTH, 31);
            break;
        case 7:
            gc.set(Calendar.DAY_OF_MONTH, 31);
            break;
        case 8:
            gc.set(Calendar.DAY_OF_MONTH, 30);
            break;
        case 9:
            gc.set(Calendar.DAY_OF_MONTH, 31);
            break;
        case 10:
            gc.set(Calendar.DAY_OF_MONTH, 30);
            break;
        case 11:
            gc.set(Calendar.DAY_OF_MONTH, 31);
            break;
        }
        // 检查闰年
        if ((gc.get(Calendar.MONTH) == Calendar.FEBRUARY)
                && (isLeapYear(gc.get(Calendar.YEAR)))) {
            gc.set(Calendar.DAY_OF_MONTH, 29);
        }
        return gc.getTime();
    }

    public static synchronized java.util.Calendar getLastDayOfMonth(
            java.util.Calendar gc) {
        /**
         * 详细设计: 1.如果date在1月,则为31日 2.如果date在2月,则为28日 3.如果date在3月,则为31日
         * 4.如果date在4月,则为30日 5.如果date在5月,则为31日 6.如果date在6月,则为30日
         * 7.如果date在7月,则为31日 8.如果date在8月,则为31日 9.如果date在9月,则为30日
         * 10.如果date在10月,则为31日 11.如果date在11月,则为30日 12.如果date在12月,则为31日
         * 1.如果date在闰年的2月,则为29日
         */
        switch (gc.get(Calendar.MONTH)) {
        case 0:
            gc.set(Calendar.DAY_OF_MONTH, 31);
            break;
        case 1:
            gc.set(Calendar.DAY_OF_MONTH, 28);
            break;
        case 2:
            gc.set(Calendar.DAY_OF_MONTH, 31);
            break;
        case 3:
            gc.set(Calendar.DAY_OF_MONTH, 30);
            break;
        case 4:
            gc.set(Calendar.DAY_OF_MONTH, 31);
            break;
        case 5:
            gc.set(Calendar.DAY_OF_MONTH, 30);
            break;
        case 6:
            gc.set(Calendar.DAY_OF_MONTH, 31);
            break;
        case 7:
            gc.set(Calendar.DAY_OF_MONTH, 31);
            break;
        case 8:
            gc.set(Calendar.DAY_OF_MONTH, 30);
            break;
        case 9:
            gc.set(Calendar.DAY_OF_MONTH, 31);
            break;
        case 10:
            gc.set(Calendar.DAY_OF_MONTH, 30);
            break;
        case 11:
            gc.set(Calendar.DAY_OF_MONTH, 31);
            break;
        }
        // 检查闰年
        if ((gc.get(Calendar.MONTH) == Calendar.FEBRUARY)
                && (isLeapYear(gc.get(Calendar.YEAR)))) {
            gc.set(Calendar.DAY_OF_MONTH, 29);
        }
        return gc;
    }

    /**
     * 取得指定日期的所处月份的第一天
     *
     * @param date
     *            指定日期。
     * @return 指定日期的所处月份的第一天
     */
    public static synchronized java.util.Date getFirstDayOfMonth(
            java.util.Date date) {
        /**
         * 详细设计: 1.设置为1号
         */
        GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();
        gc.setTime(date);
        gc.set(Calendar.DAY_OF_MONTH, 1);
        return gc.getTime();
    }

    public static synchronized java.util.Calendar getFirstDayOfMonth(
            java.util.Calendar gc) {
        /**
         * 详细设计: 1.设置为1号
         */
        gc.set(Calendar.DAY_OF_MONTH, 1);
        return gc;
    }

    /**
     * 将日期对象转换成为指定ORA日期、时间格式的字符串形式。如果日期对象为空,返回 一个空字符串对象,而不是一个空对象。
     *
     * @param theDate
     *            将要转换为字符串的日期对象。
     * @param hasTime
     *            如果返回的字符串带时间则为true
     * @return 转换的结果
     */
    public static synchronized String toOraString(Date theDate, boolean hasTime) {
        /**
         * 详细设计: 1.如果有时间,则设置格式为getOraDateTimeFormat()的返回值
         * 2.否则设置格式为getOraDateFormat()的返回值 3.调用toString(Date theDate, DateFormat
         * theDateFormat)
         */
        DateFormat theFormat;
        if (hasTime) {
            theFormat = getOraDateTimeFormat();
        } else {
            theFormat = getOraDateFormat();
        }
        return toString(theDate, theFormat);
    }

    /**
     * 将日期对象转换成为指定日期、时间格式的字符串形式。如果日期对象为空,返回 一个空字符串对象,而不是一个空对象。
     *
     * @param theDate
     *            将要转换为字符串的日期对象。
     * @param hasTime
     *            如果返回的字符串带时间则为true
     * @return 转换的结果
     */
    public static synchronized String toString(Date theDate, boolean hasTime) {
        /**
         * 详细设计: 1.如果有时间,则设置格式为getDateTimeFormat的返回值 2.否则设置格式为getDateFormat的返回值
         * 3.调用toString(Date theDate, DateFormat theDateFormat)
         */
        DateFormat theFormat;
        if (hasTime) {
            theFormat = getDateTimeFormat();
        } else {
            theFormat = getDateFormat();
        }
        return toString(theDate, theFormat);
    }

    /**
     * 标准日期格式
     */
    private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat(
            "MM/dd/yyyy");

    /**
     * 标准时间格式
     */
    private static final SimpleDateFormat DATE_TIME_FORMAT = new SimpleDateFormat(
            "MM/dd/yyyy HH:mm");

    /**
     * 带时分秒的标准时间格式
     */
    private static final SimpleDateFormat DATE_TIME_EXTENDED_FORMAT = new SimpleDateFormat(
            "MM/dd/yyyy HH:mm:ss");

    /**
     * ORA标准日期格式
     */
    private static final SimpleDateFormat ORA_DATE_FORMAT = new SimpleDateFormat(
            "yyyyMMdd");

    /**
     * ORA标准时间格式
     */
    private static final SimpleDateFormat ORA_DATE_TIME_FORMAT = new SimpleDateFormat(
            "yyyyMMddHHmm");

    /**
     * 带时分秒的ORA标准时间格式
     */
    private static final SimpleDateFormat ORA_DATE_TIME_EXTENDED_FORMAT = new SimpleDateFormat(
            "yyyyMMddHHmmss");

    /**
     * 创建一个标准日期格式的克隆
     *
     * @return 标准日期格式的克隆
     */
    public static synchronized DateFormat getDateFormat() {
        /**
         * 详细设计: 1.返回DATE_FORMAT
         */
        SimpleDateFormat theDateFormat = (SimpleDateFormat) DATE_FORMAT.clone();
        theDateFormat.setLenient(false);
        return theDateFormat;
    }

    /**
     * 创建一个标准时间格式的克隆
     *
     * @return 标准时间格式的克隆
     */
    public static synchronized DateFormat getDateTimeFormat() {
        /**
         * 详细设计: 1.返回DATE_TIME_FORMAT
         */
        SimpleDateFormat theDateTimeFormat = (SimpleDateFormat) DATE_TIME_FORMAT
                .clone();
        theDateTimeFormat.setLenient(false);
        return theDateTimeFormat;
    }

    /**
     * 创建一个标准ORA日期格式的克隆
     *
     * @return 标准ORA日期格式的克隆
     */
    public static synchronized DateFormat getOraDateFormat() {
        /**
         * 详细设计: 1.返回ORA_DATE_FORMAT
         */
        SimpleDateFormat theDateFormat = (SimpleDateFormat) ORA_DATE_FORMAT
                .clone();
        theDateFormat.setLenient(false);
        return theDateFormat;
    }

    /**
     * 创建一个标准ORA时间格式的克隆
     *
     * @return 标准ORA时间格式的克隆
     */
    public static synchronized DateFormat getOraDateTimeFormat() {
        /**
         * 详细设计: 1.返回ORA_DATE_TIME_FORMAT
         */
        SimpleDateFormat theDateTimeFormat = (SimpleDateFormat) ORA_DATE_TIME_FORMAT
                .clone();
        theDateTimeFormat.setLenient(false);
        return theDateTimeFormat;
    }

    /**
     * 将一个日期对象转换成为指定日期、时间格式的字符串。 如果日期对象为空,返回一个空字符串,而不是一个空对象。
     *
     * @param theDate
     *            要转换的日期对象
     * @param theDateFormat
     *            返回的日期字符串的格式
     * @return 转换结果
     */
    public static synchronized String toString(Date theDate,
            DateFormat theDateFormat) {
        /**
         * 详细设计: 1.theDate为空,则返回"" 2.否则使用theDateFormat格式化
         */
        if (theDate == null)
            return "";
        return theDateFormat.format(theDate);
    }
}

分享到:
评论

相关推荐

    时间格式转换类DateUtil.java

    时间格式转换类DateUtil.java

    DateUtil.java 获取剩余时间 剩余 1时33分31秒

    获取剩余时间,根据创建时间、间隔小时值,生成剩余时间值 ,亲测好用!!!!!!!!!! 剩余1时33分31秒

    Java DateUtil.java日期时间操作类源代码.rar

    Java DateUtil.java日期时间操作类源代码,DateUtil类包含了标准的时间和日期格式,以及这些格式在字符串及日期之间转换的方法。比如日期格式转换成时间戳、得到格式化后的系统当前日期、转化日期格式"MM/dd/YY、MM....

    dateutil类 时间操作

    dateutil类 日期、时间、星期操作类.已打jar包

    DateUtil.Java 日期时间操作函数库代码.rar

    一个Java 日期时间操作函数集 DateUtil.java代码,用于时间和日期操作的工具类,DateUtil类包含了标准的时间和日期格式,以及这些格式在字符串及日期之间转换的方法,格式化后的系统当前时间,如果有异常产生,返回...

    DateUtil.java 时间日期处理工具类

    包含"yyyy-MM-dd"、"yyyy-MM-dd HH:mm:ss"、"yyyyMMdd"、"yyyyMMddHHmmss"、"yyyy-MM"、"yyyyMM"等时间格式的转换。 其中: 1.String转Timestamp stringToTimestamp(String dateStr); 2.比较传入时间与当前时间前一...

    Java DateUtil时间工具类

    在实际工作中总结下来的时间工具类,不是很多,够用就行,后期继续增加

    DateUtil获取时间工具类

    使用预设格式将字符串转为Date,使用参数Format将字符串转为Date,字符串转换成日期 如果转换格式为空,则利用默认格式进行转换操作,日期转换为字符串

    DateUtil.java时间类

    时间类的年月日小时、分、秒,随你选择,一 个摘抄的可以自由改动的时间类

    强大的DateUtil

    包含日期偏移、生日计算、某个时间年月、是否是今天、计算第几周、时间差、比较大小以及间隔等常用业务时间计算方法、

    java 时间工具类 DateUtil

    这是一个功能很强大的时间的工具类,是本人在做项目中,积累的,当然也有cope别人的.我是集成了所有好用的类,拿出来分享,希望能帮助大家!!!! 如果还没有实现的功能,请大家留言!我会尽快的更新,实现你们想要的功能.

    Java - DateUtil 日期时间转换工具类

    资源名称:DateUtil 日期时间转换工具类 内容概要:日期时间转换工具类,包括基本的Date类型,String类型,TimeStamp类型,LocalDateTime类型,LocalDate类型之间的互相转换,还提供了许多与时间获取,时间计算有关...

    日期 dateutil Java 日期工具类

    快速日期格式化类 ,线程安全的 包括:获取 DateUtil.STYLE格式的日期 字符转日期 日期转字符 字符日期从src_format改为dest_format 返回当前系统日期时间等

    DateUtil日期工具类

    DateUtil 日期工具类

    DateUtil通用类

    DateUtil通用类 DateUtil通用类 DateUtil通用类

    DateUtil(日期工具类)

    DateUtil(日期工具类)DateUtil(日期工具类)DateUtil(日期工具类)DateUtil(日期工具类)

    JS DateUtil工具类

    JS日期工具类,方便大家的使用。后期会持续更新.......

    日期时间处理类(DateUtil)

    NULL 博文链接:https://baobeituping.iteye.com/blog/801399

    python-dateutil-2.8.0.tar

    python源码安装包python-dateutil-2.8.0.tar,解压后 python setup.py install进行安装.

    python_dateutil-2.6.0-py2.py3-none-any.whl

    dateutil模块

Global site tag (gtag.js) - Google Analytics