《android 日期工具类》

来源:互联网 发布:淘宝访客数是什么意思 编辑:程序博客网 时间:2024/06/06 17:20

直接贴代码:

/** * <h3>日期工具类</h3> * <p>主要实现了日期的常用操作 */@SuppressLint("SimpleDateFormat")public final class DateUtil {    /**     * yyyy-MM-dd HH:mm:ss字符串     */    public static final String DEFAULT_DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";    /**     * yyyy-MM-dd字符串     */    public static final String DEFAULT_FORMAT_DATE = "yyyy-MM-dd";    /**     * HH:mm:ss字符串     */    public static final String DEFAULT_FORMAT_TIME = "HH:mm:ss";    /**     * yyyy-MM-dd HH:mm:ss格式     */    public static final ThreadLocal<SimpleDateFormat> defaultDateTimeFormat = new ThreadLocal<SimpleDateFormat>() {        @Override        protected SimpleDateFormat initialValue() {            return new SimpleDateFormat(DEFAULT_DATE_TIME_FORMAT);        }    };    /**     * yyyy-MM-dd格式     */    public static final ThreadLocal<SimpleDateFormat> defaultDateFormat = new ThreadLocal<SimpleDateFormat>() {        @Override        protected SimpleDateFormat initialValue() {            return new SimpleDateFormat(DEFAULT_FORMAT_DATE);        }    };    /**     * HH:mm:ss格式     */    public static final ThreadLocal<SimpleDateFormat> defaultTimeFormat = new ThreadLocal<SimpleDateFormat>() {        @Override        protected SimpleDateFormat initialValue() {            return new SimpleDateFormat(DEFAULT_FORMAT_TIME);        }    };    private DateUtil() {        throw new RuntimeException(" 3");    }    /**     * long时间转成yyyy-MM-dd HH:mm:ss字符串<br>     *     * @param timeInMillis 时间long     * @return yyyy-MM-dd HH:mm:ss     */    public static String getDateTimeFromMillis(long timeInMillis) {        return getDateTimeFormat(new Date(timeInMillis));    }    /**     * long时间转成yyyy-MM-dd字符串<br>     *     * @param timeInMillis     * @return yyyy-MM-dd     */    public static String getDateFromMillis(long timeInMillis) {        return getDateFormat(new Date(timeInMillis));    }    /**     * date转成yyyy-MM-dd HH:mm:ss字符串     * <br>     *     * @param date Date对象     * @return yyyy-MM-dd HH:mm:ss     */    public static String getDateTimeFormat(Date date) {        return dateSimpleFormat(date, defaultDateTimeFormat.get());    }    /**     * 将年月日的int转成yyyy-MM-dd的字符串     *     * @param year       * @param month 1-12     * @param day        *              注:月表示Calendar的月,比实际小1     *              对输入项未做判断     */    public static String getDateFormat(int year, int month, int day) {        return getDateFormat(getDate(year, month, day));    }    /**     * date转成yyyy-MM-dd字符串<br>     *     * @param date Date对象     * @return yyyy-MM-dd     */    public static String getDateFormat(Date date) {        return dateSimpleFormat(date, defaultDateFormat.get());    }    /**     * 获得指定日期的前一天     *     * @param specifiedDay     * @return     * @throws Exception     */    public static String getSpecifiedDayBefore(String specifiedDay) {//SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");        Calendar c = Calendar.getInstance();        Date date = null;        try {            date = new SimpleDateFormat("yy-MM-dd").parse(specifiedDay);        } catch (ParseException e) {            e.printStackTrace();        }        c.setTime(date);        int day = c.get(Calendar.DATE);        c.set(Calendar.DATE, day - 1);        String dayBefore = new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());        return dayBefore;    }    /**     * 获得HH:mm:ss的时间     *     * @param date     * @return     */    public static String getTimeFormat(Date date) {        return dateSimpleFormat(date, defaultTimeFormat.get());    }    /**     * 格式化日期显示格式     *     * @param sdate  原始日期格式 "yyyy-MM-dd"     * @param format 格式化后日期格式     * @return 格式化后的日期显示     */    public static String dateFormat(String sdate, String format) {        SimpleDateFormat formatter = new SimpleDateFormat(format);        java.sql.Date date = java.sql.Date.valueOf(sdate);        return dateSimpleFormat(date, formatter);    }    /**     * 格式化日期显示格式     *     * @param date   Date对象     * @param format 格式化后日期格式     * @return 格式化后的日期显示     */    public static String dateFormat(Date date, String format) {        SimpleDateFormat formatter = new SimpleDateFormat(format);        return dateSimpleFormat(date, formatter);    }    /**     * date转成字符串     *     * @param date   Date     * @param format SimpleDateFormat     *               <br>     *               注: SimpleDateFormat为空时,采用默认的yyyy-MM-dd HH:mm:ss格式     * @return yyyy-MM-dd HH:mm:ss     */    public static String dateSimpleFormat(Date date, SimpleDateFormat format) {        if (format == null)            format = defaultDateTimeFormat.get();        return (date == null ? "" : format.format(date));    }    /**     * "yyyy-MM-dd HH:mm:ss" 格式的字符串转成Date     *     * @param strDate 时间字符串     * @return Date     */    public static Date getDateByDateTimeFormat(String strDate) {        return getDateByFormat(strDate, defaultDateTimeFormat.get());    }    /**     * "yyyy-MM-dd" 格式的字符串转成Date     *     * @param strDate     * @return Date     */    public static Date getDateByDateFormat(String strDate) {        return getDateByFormat(strDate, defaultDateFormat.get());    }    /**     * 将指定格式的时间字符串转成Date对象     *     * @param strDate 时间字符串     * @param format  格式化字符串     * @return Date     */    public static Date getDateByFormat(String strDate, String format) {        return getDateByFormat(strDate, new SimpleDateFormat(format));    }    /**     * String字符串按照一定格式转成Date<br>     * 注: SimpleDateFormat为空时,采用默认的yyyy-MM-dd HH:mm:ss格式     *     * @param strDate 时间字符串     * @param format  SimpleDateFormat对象     * @throws ParseException 日期格式转换出错     */    private static Date getDateByFormat(String strDate, SimpleDateFormat format) {        if (format == null)            format = defaultDateTimeFormat.get();        try {            return format.parse(strDate);        } catch (ParseException e) {            e.printStackTrace();        }        return null;    }    /**     * 将年月日的int转成date     *     * @param year       * @param month 1-12     * @param day        *              注:月表示Calendar的月,比实际小1     */    public static Date getDate(int year, int month, int day) {        Calendar mCalendar = Calendar.getInstance();        mCalendar.set(year, month - 1, day);        return mCalendar.getTime();    }    /**     * 求两个日期相差天数     *     * @param strat 起始日期,格式yyyy-MM-dd     * @param end   终止日期,格式yyyy-MM-dd     * @return 两个日期相差天数     */    public static long getIntervalDays(String strat, String end) {        return ((java.sql.Date.valueOf(end)).getTime() - (java.sql.Date                .valueOf(strat)).getTime()) / (3600 * 24 * 1000);    }    /**     * 获得当前年份     *     * @return year(int)     */    public static int getCurrentYear() {        Calendar mCalendar = Calendar.getInstance();        return mCalendar.get(Calendar.YEAR);    }    /**     * 获得当前月份     *     * @return month(int) 1-12     */    public static int getCurrentMonth() {        Calendar mCalendar = Calendar.getInstance();        return mCalendar.get(Calendar.MONTH) + 1;    }    /**     * 获得当月几号     *     * @return day(int)     */    public static int getDayOfMonth() {        Calendar mCalendar = Calendar.getInstance();        return mCalendar.get(Calendar.DAY_OF_MONTH);    }    /**     * 获得今天的日期(格式:yyyy-MM-dd)     *     * @return yyyy-MM-dd     */    public static String getToday() {        Calendar mCalendar = Calendar.getInstance();        return getDateFormat(mCalendar.getTime());    }    /**     * 获得昨天的日期(格式:yyyy-MM-dd)     *     * @return yyyy-MM-dd     */    public static String getYesterday() {        Calendar mCalendar = Calendar.getInstance();        mCalendar.add(Calendar.DATE, -1);        return getDateFormat(mCalendar.getTime());    }    /**     * 获得前天的日期(格式:yyyy-MM-dd)     *     * @return yyyy-MM-dd     */    public static String getBeforeYesterday() {        Calendar mCalendar = Calendar.getInstance();        mCalendar.add(Calendar.DATE, -2);        return getDateFormat(mCalendar.getTime());    }    /**     * 获得几天之前或者几天之后的日期     *     * @param diff 差值:正的往后推,负的往前推     * @return     */    public static String getOtherDay(int diff) {        Calendar mCalendar = Calendar.getInstance();        mCalendar.add(Calendar.DATE, diff);        return getDateFormat(mCalendar.getTime());    }    /**     * 取得给定日期加上一定天数后的日期对象.     *     * @param //date 给定的日期对象     * @param amount 需要添加的天数,如果是向前的天数,使用负数就可以.     * @return Date 加上一定天数以后的Date对象.     */    public static String getCalcDateFormat(String sDate, int amount) {        Date date = getCalcDate(getDateByDateFormat(sDate), amount);        return getDateFormat(date);    }    /**     * 取得给定日期加上一定天数后的日期对象.     *     * @param date   给定的日期对象     * @param amount 需要添加的天数,如果是向前的天数,使用负数就可以.     * @return Date 加上一定天数以后的Date对象.     */    public static Date getCalcDate(Date date, int amount) {        Calendar cal = Calendar.getInstance();        cal.setTime(date);        cal.add(Calendar.DATE, amount);        return cal.getTime();    }    /**     * 获得一个计算十分秒之后的日期对象     *     * @param date     * @param hOffset 时偏移量,可为负     * @param mOffset 分偏移量,可为负     * @param sOffset 秒偏移量,可为负     * @return     */    public static Date getCalcTime(Date date, int hOffset, int mOffset, int sOffset) {        Calendar cal = Calendar.getInstance();        if (date != null)            cal.setTime(date);        cal.add(Calendar.HOUR_OF_DAY, hOffset);        cal.add(Calendar.MINUTE, mOffset);        cal.add(Calendar.SECOND, sOffset);        return cal.getTime();    }    /**     * 根据指定的年月日小时分秒,返回一个java.Util.Date对象。     *     * @param year           * @param month     0-11     * @param date           * @param hourOfDay 小时 0-23     * @param minute    0-59     * @param second    0-59     * @return 一个Date对象     */    public static Date getDate(int year, int month, int date, int hourOfDay,                               int minute, int second) {        Calendar cal = Calendar.getInstance();        cal.set(year, month, date, hourOfDay, minute, second);        return cal.getTime();    }    /**     * 获得年月日数据     *     * @param sDate yyyy-MM-dd格式     * @return arr[0]:年, arr[1]:0-11 , arr[2]     */    public static int[] getYearMonthAndDayFrom(String sDate) {        return getYearMonthAndDayFromDate(getDateByDateFormat(sDate));    }    /**     * 获得年月日数据     *     * @return arr[0]:年, arr[1]:0-11 , arr[2]     */    public static int[] getYearMonthAndDayFromDate(Date date) {        Calendar calendar = Calendar.getInstance();        calendar.setTime(date);        int[] arr = new int[3];        arr[0] = calendar.get(Calendar.YEAR);        arr[1] = calendar.get(Calendar.MONTH);        arr[2] = calendar.get(Calendar.DAY_OF_MONTH);        return arr;    }}

原创粉丝点击