zoukankan      html  css  js  c++  java
  • JAVA日期查询:季度、月份、星期等时间信息

    package com.stt.dateChange;
     
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
     
    import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;
     
    /**
     * 
     * @author zengms
     * @date 2012-12-27
     * 
     */
    public class DateUtils {
     
        private static final Log logger = LogFactory.getLog(DateUtils.class);
     
        public static final String YYYYMMDD = "yyyy-MM-dd";
     
        public static final String YYYYMMDD_ZH = "yyyy年MM月dd日";
     
        public static final int FIRST_DAY_OF_WEEK = Calendar.MONDAY; // 中国周一是一周的第一天
     
        /**
         * 
         * @param strDate
         * @return
         */
        public static Date parseDate(String strDate) {
            return parseDate(strDate, null);
        }
     
        /**
         * parseDate
         * 
         * @param strDate
         * @param pattern
         * @return
         */
        public static Date parseDate(String strDate, String pattern) {
            Date date = null;
            try {
                if (pattern == null) {
                    pattern = YYYYMMDD;
                }
                SimpleDateFormat format = new SimpleDateFormat(pattern);
                date = format.parse(strDate);
            } catch (Exception e) {
                logger.error("parseDate error:" + e);
            }
            return date;
        }
     
        /**
         * format date
         * 
         * @param date
         * @return
         */
        public static String formatDate(Date date) {
            return formatDate(date, null);
        }
     
        /**
         * format date
         * 
         * @param date
         * @param pattern
         * @return
         */
        public static String formatDate(Date date, String pattern) {
            String strDate = null;
            try {
                if (pattern == null) {
                    pattern = YYYYMMDD;
                }
                SimpleDateFormat format = new SimpleDateFormat(pattern);
                strDate = format.format(date);
            } catch (Exception e) {
                logger.error("formatDate error:", e);
            }
            return strDate;
        }
     
        /**
         * 取得日期:年
         * 
         * @param date
         * @return
         */
        public static int getYear(Date date) {
            Calendar c = Calendar.getInstance();
            c.setTime(date);
            int year = c.get(Calendar.YEAR);
            return year;
        }
     
        /**
         * 取得日期:年
         * 
         * @param date
         * @return
         */
        public static int getMonth(Date date) {
            Calendar c = Calendar.getInstance();
            c.setTime(date);
            int month = c.get(Calendar.MONTH);
            return month + 1;
        }
     
        /**
         * 取得日期:年
         * 
         * @param date
         * @return
         */
        public static int getDay(Date date) {
            Calendar c = Calendar.getInstance();
            c.setTime(date);
            int da = c.get(Calendar.DAY_OF_MONTH);
            return da;
        }
     
        /**
         * 取得当天日期是周几
         * 
         * @param date
         * @return
         */
        public static int getWeekDay(Date date) {
            Calendar c = Calendar.getInstance();
            c.setTime(date);
            int week_of_year = c.get(Calendar.DAY_OF_WEEK);
            return week_of_year - 1;
        }
     
        /**
         * 取得一年的第几周
         * 
         * @param date
         * @return
         */
        public static int getWeekOfYear(Date date) {
            Calendar c = Calendar.getInstance();
            c.setTime(date);
            int week_of_year = c.get(Calendar.WEEK_OF_YEAR);
            return week_of_year;
        }
     
        /**
         * getWeekBeginAndEndDate
         * 
         * @param date
         * @param pattern
         * @return
         */
        public static String getWeekBeginAndEndDate(Date date, String pattern) {
            Date monday = getMondayOfWeek(date);
            Date sunday = getSundayOfWeek(date);
            return formatDate(monday, pattern) + " - "
                    + formatDate(sunday, pattern);
        }
     
        /**
         * 根据日期取得对应周周一日期
         * 
         * @param date
         * @return
         */
        public static Date getMondayOfWeek(Date date) {
            Calendar monday = Calendar.getInstance();
            monday.setTime(date);
            monday.setFirstDayOfWeek(FIRST_DAY_OF_WEEK);
            monday.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
            return monday.getTime();
        }
     
        /**
         * 根据日期取得对应周周日日期
         * 
         * @param date
         * @return
         */
        public static Date getSundayOfWeek(Date date) {
            Calendar sunday = Calendar.getInstance();
            sunday.setTime(date);
            sunday.setFirstDayOfWeek(FIRST_DAY_OF_WEEK);
            sunday.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
            return sunday.getTime();
        }
     
        /**
         * 取得月的剩余天数
         * 
         * @param date
         * @return
         */
        public static int getRemainDayOfMonth(Date date) {
            int dayOfMonth = getDayOfMonth(date);
            int day = getPassDayOfMonth(date);
            return dayOfMonth - day;
        }
     
        /**
         * 取得月已经过的天数
         * 
         * @param date
         * @return
         */
        public static int getPassDayOfMonth(Date date) {
            Calendar c = Calendar.getInstance();
            c.setTime(date);
            return c.get(Calendar.DAY_OF_MONTH);
        }
     
        /**
         * 取得月天数
         * 
         * @param date
         * @return
         */
        public static int getDayOfMonth(Date date) {
            Calendar c = Calendar.getInstance();
            c.setTime(date);
            return c.getActualMaximum(Calendar.DAY_OF_MONTH);
        }
     
        /**
         * 取得月第一天
         * 
         * @param date
         * @return
         */
        public static Date getFirstDateOfMonth(Date date) {
            Calendar c = Calendar.getInstance();
            c.setTime(date);
            c.set(Calendar.DAY_OF_MONTH, c.getActualMinimum(Calendar.DAY_OF_MONTH));
            return c.getTime();
        }
     
        /**
         * 取得月最后一天
         * 
         * @param date
         * @return
         */
        public static Date getLastDateOfMonth(Date date) {
            Calendar c = Calendar.getInstance();
            c.setTime(date);
            c.set(Calendar.DAY_OF_MONTH, c.getActualMaximum(Calendar.DAY_OF_MONTH));
            return c.getTime();
        }
     
        /**
         * 取得季度第一天
         * 
         * @param date
         * @return
         */
        public static Date getFirstDateOfSeason(Date date) {
            return getFirstDateOfMonth(getSeasonDate(date)[0]);
        }
     
        /**
         * 取得季度最后一天
         * 
         * @param date
         * @return
         */
        public static Date getLastDateOfSeason(Date date) {
            return getLastDateOfMonth(getSeasonDate(date)[2]);
        }
     
        /**
         * 取得季度天数
         * 
         * @param date
         * @return
         */
        public static int getDayOfSeason(Date date) {
            int day = 0;
            Date[] seasonDates = getSeasonDate(date);
            for (Date date2 : seasonDates) {
                day += getDayOfMonth(date2);
            }
            return day;
        }
     
        /**
         * 取得季度剩余天数
         * 
         * @param date
         * @return
         */
        public static int getRemainDayOfSeason(Date date) {
            return getDayOfSeason(date) - getPassDayOfSeason(date);
        }
     
        /**
         * 取得季度已过天数
         * 
         * @param date
         * @return
         */
        public static int getPassDayOfSeason(Date date) {
            int day = 0;
     
            Date[] seasonDates = getSeasonDate(date);
     
            Calendar c = Calendar.getInstance();
            c.setTime(date);
            int month = c.get(Calendar.MONTH);
     
            if (month == Calendar.JANUARY || month == Calendar.APRIL
                    || month == Calendar.JULY || month == Calendar.OCTOBER) {// 季度第一个月
                day = getPassDayOfMonth(seasonDates[0]);
            } else if (month == Calendar.FEBRUARY || month == Calendar.MAY
                    || month == Calendar.AUGUST || month == Calendar.NOVEMBER) {// 季度第二个月
                day = getDayOfMonth(seasonDates[0])
                        + getPassDayOfMonth(seasonDates[1]);
            } else if (month == Calendar.MARCH || month == Calendar.JUNE
                    || month == Calendar.SEPTEMBER || month == Calendar.DECEMBER) {// 季度第三个月
                day = getDayOfMonth(seasonDates[0]) + getDayOfMonth(seasonDates[1])
                        + getPassDayOfMonth(seasonDates[2]);
            }
            return day;
        }
     
        /**
         * 取得季度月
         * 
         * @param date
         * @return
         */
        public static Date[] getSeasonDate(Date date) {
            Date[] season = new Date[3];
     
            Calendar c = Calendar.getInstance();
            c.setTime(date);
     
            int nSeason = getSeason(date);
            if (nSeason == 1) {// 第一季度
                c.set(Calendar.MONTH, Calendar.JANUARY);
                season[0] = c.getTime();
                c.set(Calendar.MONTH, Calendar.FEBRUARY);
                season[1] = c.getTime();
                c.set(Calendar.MONTH, Calendar.MARCH);
                season[2] = c.getTime();
            } else if (nSeason == 2) {// 第二季度
                c.set(Calendar.MONTH, Calendar.APRIL);
                season[0] = c.getTime();
                c.set(Calendar.MONTH, Calendar.MAY);
                season[1] = c.getTime();
                c.set(Calendar.MONTH, Calendar.JUNE);
                season[2] = c.getTime();
            } else if (nSeason == 3) {// 第三季度
                c.set(Calendar.MONTH, Calendar.JULY);
                season[0] = c.getTime();
                c.set(Calendar.MONTH, Calendar.AUGUST);
                season[1] = c.getTime();
                c.set(Calendar.MONTH, Calendar.SEPTEMBER);
                season[2] = c.getTime();
            } else if (nSeason == 4) {// 第四季度
                c.set(Calendar.MONTH, Calendar.OCTOBER);
                season[0] = c.getTime();
                c.set(Calendar.MONTH, Calendar.NOVEMBER);
                season[1] = c.getTime();
                c.set(Calendar.MONTH, Calendar.DECEMBER);
                season[2] = c.getTime();
            }
            return season;
        }
     
        /**
         * 
         * 1 第一季度 2 第二季度 3 第三季度 4 第四季度
         * 
         * @param date
         * @return
         */
        public static int getSeason(Date date) {
     
            int season = 0;
     
            Calendar c = Calendar.getInstance();
            c.setTime(date);
            int month = c.get(Calendar.MONTH);
            switch (month) {
            case Calendar.JANUARY:
            case Calendar.FEBRUARY:
            case Calendar.MARCH:
                season = 1;
                break;
            case Calendar.APRIL:
            case Calendar.MAY:
            case Calendar.JUNE:
                season = 2;
                break;
            case Calendar.JULY:
            case Calendar.AUGUST:
            case Calendar.SEPTEMBER:
                season = 3;
                break;
            case Calendar.OCTOBER:
            case Calendar.NOVEMBER:
            case Calendar.DECEMBER:
                season = 4;
                break;
            default:
                break;
            }
            return season;
        }
     
        public static void main(String[] args) {
     
            String strDate = "2013-01-01";
     
            Date date = parseDate(strDate);
     
            System.out.println(strDate + " 今天是哪一年?" + getYear(date));
            System.out.println(strDate + " 今天是哪个月?" + getMonth(date));
            System.out.println(strDate + " 今天是几号?" + getDay(date));
            System.out.println(strDate + " 今天是周几?" + getWeekDay(date));
            System.out.println(strDate + " 是一年的第几周?" + getWeekOfYear(date));
            System.out.println(strDate + " 所在周起始结束日期?"
                    + getWeekBeginAndEndDate(date, "yyyy年MM月dd日"));
            System.out.println(strDate + " 所在周周一是?"
                    + formatDate(getMondayOfWeek(date)));
            System.out.println(strDate + " 所在周周日是?"
                    + formatDate(getSundayOfWeek(date)));
     
            System.out.println(strDate + " 当月第一天日期?"
                    + formatDate(getFirstDateOfMonth(date)));
            System.out.println(strDate + " 当月最后一天日期?"
                    + formatDate(getLastDateOfMonth(date)));
            System.out.println(strDate + " 当月天数?" + getDayOfMonth(date));
            System.out.println(strDate + " 当月已过多少天?" + getPassDayOfMonth(date));
            System.out.println(strDate + " 当月剩余多少天?" + getRemainDayOfMonth(date));
     
            System.out.println(strDate + " 所在季度第一天日期?"
                    + formatDate(getFirstDateOfSeason(date)));
            System.out.println(strDate + " 所在季度最后一天日期?"
                    + formatDate(getLastDateOfSeason(date)));
            System.out.println(strDate + " 所在季度天数?" + getDayOfSeason(date));
            System.out.println(strDate + " 所在季度已过多少天?" + getPassDayOfSeason(date));
            System.out
                    .println(strDate + " 所在季度剩余多少天?" + getRemainDayOfSeason(date));
            System.out.println(strDate + " 是第几季度?" + getSeason(date));
            System.out.println(strDate + " 所在季度月份?"
                    + formatDate(getSeasonDate(date)[0], "yyyy年MM月") + "/"
                    + formatDate(getSeasonDate(date)[1], "yyyy年MM月") + "/"
                    + formatDate(getSeasonDate(date)[2], "yyyy年MM月"));
        }
    }
  • 相关阅读:
    百度2015校园招聘前端笔试题汇总
    雅虎网站页面性能优化的34条黄金守则(转)
    web跨域通信问题解决
    setTimeout(fn,0)的作用分析
    阿里校园招聘前端面试
    rownum浅谈(二)
    rownum浅谈(一)
    try catch finally 执行顺序面试题总结
    浅谈CPU、内存、硬盘之间的关系
    【多线程学习(2)】继承Thread类和实现Runnable接口、Callable接口的区别
  • 原文地址:https://www.cnblogs.com/shuilangyizu/p/9714230.html
Copyright © 2011-2022 走看看