• 时间工具类


    工具类一:

    package com.common.time;
    
    import java.text.DateFormat;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    
    /**
     * 
     * 功能描述:
     * 
     * @author Administrator
     * @Date Jul 19, 2008
     * @Time 9:47:53 AM
     * @version 1.0
     */
    public class DateUtil {
    
        public static Date date = null;
    
        public static DateFormat dateFormat = null;
    
        public static Calendar calendar = null;
    
        /**
         * 功能描述:格式化日期
         * 
         * @param dateStr
         *            String 字符型日期
         * @param format
         *            String 格式
         * @return Date 日期
         */
        public static Date parseDate(String dateStr, String format) {
            try {
                dateFormat = new SimpleDateFormat(format);
                String dt = dateStr.replaceAll("-", "/");
                if ((!dt.equals("")) && (dt.length() < format.length())) {
                    dt += format.substring(dt.length()).replaceAll("[YyMmDdHhSs]",
                        "0");
                }
                date = (Date) dateFormat.parse(dt);
            } catch (Exception e) {}
            return date;
        }
    
        /**
         * 功能描述:格式化日期
         * 
         * @param dateStr
         *            String 字符型日期:YYYY-MM-DD 格式
         * @return Date
         */
        public static Date parseDate(String dateStr) {
            return parseDate(dateStr, "yyyy/MM/dd");
        }
    
        /**
         * 功能描述:格式化输出日期
         * 
         * @param date
         *            Date 日期
         * @param format
         *            String 格式
         * @return 返回字符型日期
         */
        public static String format(Date date, String format) {
            String result = "";
            try {
                if (date != null) {
                    dateFormat = new SimpleDateFormat(format);
                    result = dateFormat.format(date);
                }
            } catch (Exception e) {}
            return result;
        }
    
        /**
         * 功能描述:
         * 
         * @param date
         *            Date 日期
         * @return
         */
        public static String format(Date date) {
            return format(date, "yyyy/MM/dd");
        }
    
        /**
         * 功能描述:返回年份
         * 
         * @param date
         *            Date 日期
         * @return 返回年份
         */
        public static int getYear(Date date) {
            calendar = Calendar.getInstance();
            calendar.setTime(date);
            return calendar.get(Calendar.YEAR);
        }
    
        /**
         * 功能描述:返回月份
         * 
         * @param date
         *            Date 日期
         * @return 返回月份
         */
        public static int getMonth(Date date) {
            calendar = Calendar.getInstance();
            calendar.setTime(date);
            return calendar.get(Calendar.MONTH) + 1;
        }
    
        /**
         * 功能描述:返回日份
         * 
         * @param date
         *            Date 日期
         * @return 返回日份
         */
        public static int getDay(Date date) {
            calendar = Calendar.getInstance();
            calendar.setTime(date);
            return calendar.get(Calendar.DAY_OF_MONTH);
        }
    
        /**
         * 功能描述:返回小时
         * 
         * @param date
         *            日期
         * @return 返回小时
         */
        public static int getHour(Date date) {
            calendar = Calendar.getInstance();
            calendar.setTime(date);
            return calendar.get(Calendar.HOUR_OF_DAY);
        }
    
        /**
         * 功能描述:返回分钟
         * 
         * @param date
         *            日期
         * @return 返回分钟
         */
        public static int getMinute(Date date) {
            calendar = Calendar.getInstance();
            calendar.setTime(date);
            return calendar.get(Calendar.MINUTE);
        }
    
        /**
         * 返回秒钟
         * 
         * @param date
         *            Date 日期
         * @return 返回秒钟
         */
        public static int getSecond(Date date) {
            calendar = Calendar.getInstance();
            calendar.setTime(date);
            return calendar.get(Calendar.SECOND);
        }
    
        /**
         * 功能描述:返回毫秒
         * 
         * @param date
         *            日期
         * @return 返回毫秒
         */
        public static long getMillis(Date date) {
            calendar = Calendar.getInstance();
            calendar.setTime(date);
            return calendar.getTimeInMillis();
        }
    
        /**
         * 功能描述:返回字符型日期
         * 
         * @param date
         *            日期
         * @return 返回字符型日期 yyyy/MM/dd 格式
         */
        public static String getDate(Date date) {
            return format(date, "yyyy/MM/dd");
        }
    
        /**
         * 功能描述:返回字符型时间
         * 
         * @param date
         *            Date 日期
         * @return 返回字符型时间 HH:mm:ss 格式
         */
        public static String getTime(Date date) {
            return format(date, "HH:mm:ss");
        }
    
        /**
         * 功能描述:返回字符型日期时间
         * 
         * @param date
         *            Date 日期
         * @return 返回字符型日期时间 yyyy/MM/dd HH:mm:ss 格式
         */
        public static String getDateTime(Date date) {
            return format(date, "yyyy/MM/dd HH:mm:ss");
        }
    
        /**
         * 功能描述:日期相加
         * 
         * @param date
         *            Date 日期
         * @param day
         *            int 天数
         * @return 返回相加后的日期
         */
        public static Date addDate(Date date, int day) {
            calendar = Calendar.getInstance();
            long millis = getMillis(date) + ((long) day) * 24 * 3600 * 1000;
            calendar.setTimeInMillis(millis);
            return calendar.getTime();
        }
    
        /**
         * 功能描述:日期相减
         * 
         * @param date
         *            Date 日期
         * @param date1
         *            Date 日期
         * @return 返回相减后的日期
         */
        public static int diffDate(Date date, Date date1) {
            return (int)((getMillis(date) - getMillis(date1)) / (24 * 3600 * 1000));
        }
    
        /**
         * 功能描述:取得指定月份的第一天
         * 
         * @param strdate
         *            String 字符型日期
         * @return String yyyy-MM-dd 格式
         */
        public static String getMonthBegin(String strdate) {
            date = parseDate(strdate);
            return format(date, "yyyy-MM") + "-01";
        }
    
        /**
         * 功能描述:取得指定月份的最后一天
         * 
         * @param strdate
         *            String 字符型日期
         * @return String 日期字符串 yyyy-MM-dd格式
         */
        public static String getMonthEnd(String strdate) {
            date = parseDate(getMonthBegin(strdate));
            calendar = Calendar.getInstance();
            calendar.setTime(date);
            calendar.add(Calendar.MONTH, 1);
            calendar.add(Calendar.DAY_OF_YEAR, -1);
            return formatDate(calendar.getTime());
        }
    
        /**
         * 功能描述:常用的格式化日期
         * 
         * @param date
         *            Date 日期
         * @return String 日期字符串 yyyy-MM-dd格式
         */
        public static String formatDate(Date date) {
            return formatDateByFormat(date, "yyyy-MM-dd");
        }
    
        /**
         * 功能描述:以指定的格式来格式化日期
         * 
         * @param date
         *            Date 日期
         * @param format
         *            String 格式
         * @return String 日期字符串
         */
        public static String formatDateByFormat(Date date, String format) {
            String result = "";
            if (date != null) {
                try {
                    SimpleDateFormat sdf = new SimpleDateFormat(format);
                    result = sdf.format(date);
                } catch (Exception ex) {
                    ex.printStackTrace();
                }
            }
            return result;
        }
    
        public static void main(String[] args) {
            Date d = new Date();
            // System.out.println(d.toString());
            //		System.out.println(formatDate(d).toString());
            // System.out.println(getMonthBegin(formatDate(d).toString()));
            // System.out.println(getMonthBegin("2008/07/19"));
            // System.out.println(getMonthEnd("2008/07/19"));
            System.out.println(addDate(d, 15).toString());
        }
    
    }
    

    工具类二:

    package www.mingketang.com;
    
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.List;
    import java.util.Locale;
    import java.util.TimeZone;
    
    
    public class DateUtils {
    
        //http响应头Expire属性时间格式   
        public static final String HTTP_RESPONSE_DATE_HEADER = "EEE, dd MMM yyyy HH:mm:ss zzz";
    
        //http响应头Expire属性时间格式工具   
        public static final SimpleDateFormat responseHeaderFormat = new SimpleDateFormat(HTTP_RESPONSE_DATE_HEADER, Locale.US);
    
        static {
            responseHeaderFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
        }
    
        /**  
         * 某个时间点的下个月的第一天  
         * @param day  
         * @return  
         */
        public static Date firstDayInNextMonth(Date day) {
            Calendar c = Calendar.getInstance();
            c.setTime(day);
            c.set(Calendar.MONTH, c.get(Calendar.MONTH) + 1);
            c.set(Calendar.DAY_OF_MONTH, 1);
            c.set(Calendar.HOUR_OF_DAY, 0);
            c.set(Calendar.MINUTE, 0);
            c.set(Calendar.SECOND, 0);
            return c.getTime();
        }
    
        /**  
         * 获取某天在星期中的排序值:  
         * 星期日 -> 星期六 对应为:1 -> 7  
         * @param date  
         * @return  
         */
        public static int getDateInWeek(Date date) {
            Calendar c = Calendar.getInstance();
            c.setTime(date);
            return c.get(Calendar.DAY_OF_WEEK);
        }
    
        /**  
         * 获取指定日期后n天的凌晨  
         * @param date  
         * @param n  
         * @return  
         */
        public static Date getDateNextDay(Date date, int n) {
            Calendar c = Calendar.getInstance();
            c.setTime(date);
            c.add(Calendar.DATE, n);
            return c.getTime();
        }
    
        /**  
         * 获取下n个月后的日期  
         * @param n 月份偏移量  
         * @return  
         */
        public static Date getDateNextMonth(int n) {
            Calendar now = Calendar.getInstance();
            now.set(Calendar.MONTH, now.get(Calendar.MONTH) + n); // 设置时间向前进n个月   
            now.set(Calendar.HOUR_OF_DAY, 0);
            now.set(Calendar.MINUTE, 0);
            now.set(Calendar.SECOND, 0);
            return now.getTime();
        }
    
        /**  
         * 获取今天在本月中的号码  
         * @return  
         */
        public static int getDateOfMoth() {
            return Calendar.getInstance().get(Calendar.DAY_OF_MONTH);
        }
    
        /**  
         * 本月的所有日期集合  
         * @return  
         */
        public static List < Date > getDatesInMonth() {
    
            List < Date > dates = new ArrayList < Date > ();
    
            Calendar c = Calendar.getInstance();
    
            // 设置代表的日期为1号   
            c.set(Calendar.DATE, 1);
    
            // 获得当前月的最大日期数   
            int maxDay = c.getActualMaximum(Calendar.DATE);
    
            for (int i = 1; i <= maxDay; i++) {
                c.set(Calendar.DATE, i);
                dates.add(c.getTime());
            }
    
            return dates;
        }
    
        /**  
         * 获取某个时间所在的月份  
         * @param date  
         * @return  
         */
        public static int getMonth(Date date) {
            Calendar c = Calendar.getInstance();
            c.setTime(date);
            return c.get(Calendar.MONTH) + 1;
        }
    
        /**  
         * 获取本月最后一天  
         * @return  
         */
        public static Date getMonthEnd() {
            int length = getDateOfMoth();
            Calendar c = Calendar.getInstance();
            c.set(Calendar.DATE, length);
            c.set(Calendar.HOUR, 24);
            c.set(Calendar.MINUTE, 0);
            c.set(Calendar.SECOND, 0);
            return c.getTime();
        }
    
        /**  
         * 获取某个时间所在月份的最后一秒  
         * @param date   
         * @return  
         */
        public static Date getMonthEnd(Date date) {
            if (date == null) {
                return null;
            }
            Calendar start = Calendar.getInstance();
            start.setTime(date);
            start.set(Calendar.MONTH, start.get(Calendar.MONTH) + 1);
            start.set(Calendar.DAY_OF_MONTH, 1);
            start.set(Calendar.HOUR, 0);
            start.set(Calendar.MINUTE, 0);
            start.set(Calendar.SECOND, 0);
            return start.getTime();
        }
    
        /**  
         * 获取某个时间所在月份的第一天凌晨  
         * @param date   
         * @return  
         */
        public static Date getMonthStart(Date date) {
            if (date == null) {
                return null;
            }
            Calendar start = Calendar.getInstance();
            start.setTime(date);
            start.set(Calendar.DAY_OF_MONTH, 1);
            start.set(Calendar.HOUR, 0);
            start.set(Calendar.MINUTE, 0);
            start.set(Calendar.SECOND, 0);
            return start.getTime();
        }
    
        /**  
         * 获取今天凌晨  
         * @return  
         */
        public static Date getMorning() {
            return getMorning(new Date());
        }
    
        /**  
         * 获取指定时间当天的凌晨  
         * @param date 给定时间当天的凌晨  
         * @return  
         */
        public static Date getMorning(Date date) {
            Calendar c = Calendar.getInstance();
            c.setTime(date);
            c.set(Calendar.HOUR_OF_DAY, 0);
            c.set(Calendar.MINUTE, 0);
            c.set(Calendar.SECOND, 0);
            return c.getTime();
        }
    
        /**  
         * 获取当前时间N天后的凌晨  
         */
        public static Date getMorningNextDate(int n) {
            Calendar now = Calendar.getInstance();
            now.set(Calendar.DATE, now.get(Calendar.DATE) + n); //设置时间向前进n天   
            now.set(Calendar.HOUR_OF_DAY, 0);
            now.set(Calendar.MINUTE, 0);
            now.set(Calendar.SECOND, 0);
            return now.getTime();
        }
    
        /**  
         * 系统当前时间过N个月后的时间  
         * @param nextStep 月份偏移量  
         * @return  
         */
        public static Date getNextMonth(int nextStep) {
            Calendar c = Calendar.getInstance();
            int m = c.get(Calendar.MONTH);
            c.set(Calendar.MONTH, m + nextStep);
            return c.getTime();
        }
    
        /**  
         * 计算给定时间推进一个月对应的时间  
         * @param date 给定时间  
         * @return 某时间过一个月后所在的时间  
         */
        public static Date getNextMonthToday(Date date) {
            Calendar c = Calendar.getInstance();
            c.setTime(date);
            c.set(Calendar.MONTH, c.get(Calendar.MONTH) + 1);
            return c.getTime();
        }
    
        /**  
         * 获取系统当前时间所在的年份  
         * @return  
         */
        public static int getYear() {
            return Calendar.getInstance().get(Calendar.YEAR);
        }
    
        /**  
         * 获取给定时间所在的年份  
         * @param date 时间  
         * @return 时间所在的年份  
         */
        public static int getYear(Date date) {
            Calendar c = Calendar.getInstance();
            c.setTime(date);
            return c.get(Calendar.YEAR);
        }
    
        /**  
         * 获取某年分的最后一天结束的时间  
         * @param year 年份  
         * @return 指定年份的最后一天结束  
         */
        public static Date getYearEnd(int year) {
            Calendar c = Calendar.getInstance();
            c.set(Calendar.YEAR, year);
            c.set(Calendar.MONTH, Calendar.DECEMBER);
            c.set(Calendar.DAY_OF_MONTH, 31);
            c.set(Calendar.HOUR_OF_DAY, 23);
            c.set(Calendar.MINUTE, 59);
            c.set(Calendar.SECOND, 59);
            return c.getTime();
        }
    
        /**  
         * 获取某年份的第一天凌晨  
         * @param year 年份  
         * @return 指定年份的第一天凌晨  
         */
        public static Date getYearStart(int year) {
            Calendar c = Calendar.getInstance();
            c.set(Calendar.YEAR, year);
            c.set(Calendar.MONTH, Calendar.JANUARY);
            c.set(Calendar.DAY_OF_MONTH, 1);
            c.set(Calendar.HOUR_OF_DAY, 0);
            c.set(Calendar.MINUTE, 0);
            c.set(Calendar.SECOND, 0);
            return c.getTime();
        }
    }
    

    工具类三:

    import static java.util.Calendar.HOUR_OF_DAY;
    import static java.util.Calendar.MILLISECOND;
    import static java.util.Calendar.MINUTE;
    import static java.util.Calendar.SECOND;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.List;
    public class DateUtil extends org.apache.commons.lang.time.DateUtils {
    
        /**
         * 默认的日期格式化样式
         */
        public static final String DAY_PATTERN = “yyyy - MM - dd”;
        /**
         * 默认的时间格式化样式
         */
        public static final String TIME_PATTERN = “HH: mm: ss”;
    
        /**
         * 将Date格式化成符合默认格式的字符串
         *
         * @param date
         * @return 返回样例:2012-03-29 14:32:23
         */
        public static String format(Date date) {
            SimpleDateFormat formatTool = new SimpleDateFormat();
            formatTool.applyPattern(DAY_PATTERN + ”” +TIME_PATTERN);
            return formatTool.format(date);
        }
    
        /**
         * 将Date格式化成符合默认日期格式的字符串
         *
         * @param date
         * @return 返回样例:2012-03-29
         */
        public static String formatDate(Date date) {
            SimpleDateFormat formatTool = new SimpleDateFormat();
            formatTool.applyPattern(DAY_PATTERN);
            return formatTool.format(date);
        }
    
        /**
         * 将Date格式化成符合默认时间格式的字符串
         *
         * @param date
         * @return 返回样例:14:32:23
         */
        public static String formatTime(Date date) {
            SimpleDateFormat formatTool = new SimpleDateFormat();
            formatTool.applyPattern(TIME_PATTERN);
            return formatTool.format(date);
        }
    
        /**
         * 按照pattern格式格式化Date
         *
         * @param date
         * @param pattern
         * 样例: yyyy/MM/dd
         * @return 返回样例:2012/03/29
         */
        public static String format(Date date, String pattern) {
            SimpleDateFormat formatTool = new SimpleDateFormat();
            formatTool.applyPattern(pattern);
            return formatTool.format(date);
        }
    
        /**
         * 将符合默认格式的字符串转换成Date
         *
         * @param dateValue
         * 样例:2012-03-29 14:32:23
         * @return
         * @throws ParseException
         */
        public static Date parse(String dateValue) throws ParseException {
            SimpleDateFormat formatTool = new SimpleDateFormat();
            formatTool.applyPattern(DAY_PATTERN + ”” +TIME_PATTERN);
            return formatTool.parse(dateValue);
        }
    
        /**
         * 将符合默认格式的日期字符串转换成Date
         *
         * @param dateValue
         * 样例:2012-03-29
         * @return
         * @throws ParseException
         */
        public static Date parseDate(String dateValue) throws ParseException {
            SimpleDateFormat formatTool = new SimpleDateFormat();
            formatTool.applyPattern(DAY_PATTERN);
            return formatTool.parse(dateValue);
        }
    
        /**
         * 将符合pattern格式的dateValue转换成Date
         *
         * @param dateValue
         * 样例:2012/03/29
         * @param pattern
         * 样例:yyyy/MM/dd
         * @return
         * @throws ParseException
         */
        public static Date parse(String dateValue, String pattern)
        throws ParseException {
            SimpleDateFormat formatTool = new SimpleDateFormat();
            formatTool.applyPattern(pattern);
            return formatTool.parse(dateValue);
        }
    
        /**
         * 返回这一天的最早的时候
         *
         * @param date
         * @return
         */
        public static Date getEarliest(Date date) {
            return parseTime(date, 0, 0, 0, 0);
        }
    
        /**
         * 返回这一天的最晚时候
         *
         * @param date
         * @return
         */
        public static Date getLastest(Date date) {
            return parseTime(date, 23, 59, 59, 999);
        }
    
        /**
         * 得到指定月的天数
         *
         * @param year
         * @param month
         * @return
         */
        public static int getMonthLastDay(int year, int month) {
            Calendar a = Calendar.getInstance();
            a.set(Calendar.YEAR, year);
            a.set(Calendar.MONTH, month– 1);
            a.set(Calendar.DATE, 1); // 把日期设置为当月第一天 a.roll(Calendar.DATE, -1);// 日期回滚一天,也就是最后一天 int maxDate = a.get(Calendar.DATE);
            return maxDate;
        }
    
        /**
         * 返回指定时间加上num天后的时间
         *
         * @param date
         * @param num
         * @return
         */
        public static Date add(Date date, int num) {
            Calendar a = Calendar.getInstance();
            a.setTime(date);
            a.add(Calendar.DAY_OF_MONTH, num);
            return a.getTime();
        }
    
        /**
         * 返回false:date=null,date是1970年;其它都返回true
         *
         * @param date
         * @return
         */
        public static boolean isNotEmpty(Date date) {
            if (date != null) {
                Calendar a = Calendar.getInstance();
                a.setTime(date);
                return a.get(Calendar.YEAR) != 1970;
            }
            return Boolean.FALSE;
        }
    
        /**
         * 获得date的小时数0-23
         *
         * @param date
         * @return
         */
        public static int getHours(Date date) {
            Calendar a = Calendar.getInstance();
            a.setTime(date);
            return a.get(Calendar.HOUR_OF_DAY);
        }
    
        /**
         * 获得date是一周的第几天,注意:周日 返回 1,周六 返回 7
         *
         * @param date
         * @return
         */
        public static int getDay(Date date) {
            Calendar a = Calendar.getInstance();
            a.setTime(date);
            return a.get(Calendar.DAY_OF_WEEK);
        }
    
        /**
         * 设定date的时间细节
         *
         * @param date
         * 要设定时间细节的date
         * @param hourOfDay
         * 0-23
         * @param minute
         * 0-59
         * @param second
         * 0-59
         * @param milliSecond
         * 0-999
         * @return
         */
        public static Date parseTime(Date date, int hourOfDay, int minute,
            int second, int milliSecond) {
            Calendar cal = Calendar.getInstance();
            cal.setTime(date);
            setCalendarTime(cal, hourOfDay, minute, second, milliSecond);
            return cal.getTime();
        }
    
        /**
         * 设定date的时间细节
         *
         * @param date
         * 要设定时间细节的date
         * @param timeDetail
         * 以:号分隔的24小时制的时间,例:16:23:42:267 或 16(等同于16:00:00:000)
         * @return
         */
        public static Date parseTime(Date date, String timeDetail) {
    
            List < String > strList = new ArrayList < String > ();
            strList.addAll(Arrays.asList(timeDetail.split(“: ”)));
    
            while (strList.size() < 4) {
                strList.add(“0″);
            }
            return parseTime(date, Integer.parseInt(strList.get(0)),
                Integer.parseInt(strList.get(1)),
                Integer.parseInt(strList.get(2)),
                Integer.parseInt(strList.get(3)));
        }
    
        /**
         * 指定时间 是否在 当前时间 之后,注:和日期无关
         *
         * @param time
         * 指定的时间, 传入样例:16:23:42:267 或 16(等同于16:00:00:000)
         * @return
         */
        public static boolean isAfterTime(String time) {
            Date date = parseTime(new Date(), time);
            return date.after(new Date());
        }
    
        /**
         * 指定时间 是否在 当前时间 之前,注:和日期无关
         *
         * @param time
         * 指定的时间, 传入样例:16:23:42:267 或 16(等同于16:00:00:000)
         * @return
         */
        public static boolean isBeforeTime(String time) {
            Date date = parseTime(new Date(), time);
            return date.before(new Date());
        }
    
        private static void setCalendarTime(Calendar cal, int hourOfDay,
            int minute, int second, int milliSecond) {
            cal.set(HOUR_OF_DAY, hourOfDay);
            cal.set(MINUTE, minute);
            cal.set(SECOND, second);
            cal.set(MILLISECOND, milliSecond);
        }
    }

    ok!

  • 相关阅读:
    UI第十七讲.图片异步加载(包括第三方), KVO, KVC
    第二十一讲.UICollectionView(集合视图)以及瀑布流效果, 通知中心(NSNotificationCenter).
    UI第十九讲:数据库
    UI第十八讲.初级数据持久化 (沙盒, 简单写入对象, 归解档, NSUserDefaults写入读取文件 )
    第十四讲(下) 可视化方式的实现通讯录.(及storyboard方式)
    第十六讲.网络编程 (HTTP协议)
    wslgit
    MyBatis时间比较
    layer开启与关闭加载层
    MyBatis中choose when正确写法
  • 原文地址:https://www.cnblogs.com/zhaokejin/p/10923673.html
Copyright © 2020-2023  润新知