Android开发时间操作类

今天无聊写了个时间操作类,用于以后开发方便直接调用。

 

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

/**
 * 时间操作类
 * Created by Alan on 2016/05/16 0016.
 */
public class DateUtility {
    public static final String DEFAULT = "yyyy-MM-dd HH:mm:ss";
    public static final String LONG = "yyyy年MM月dd日 HH时mm分ss秒";
    public static final String SHORT = "yyyy-MM-dd HH:mm";
    public static final String DATE = "yyyy-MM-dd";
    public static final String TIME = "HH:mm:ss";
    public static final String FULL = "yyyy-MM-dd HH:mm:ss EEEE";

    public static final String WEEK = "EEEE";
    private static SimpleDateFormat sdf;



    public DateUtility(){


    }

    /**
     * 取时间戳 dateUtility.getTime()
     * @return
     */
    public long getTime(){
        return new Date().getTime();
    }

    /**
     * 时间戳到日期时间 dateUtility.strToDateTime(dateUtility.getTime(), "yyyy-MM-dd hh:mm:ss")
     * @param time
     * @param template 默认:yyyy-MM-dd HH:mm:ss
     * @return
     */
    public String strToDateTime(long time, String template){
        if(template.isEmpty() || template.equals("")){
            template = DEFAULT;
        }

        sdf = new SimpleDateFormat(template, Locale.CHINA);

        return sdf.format(new Date(time));
    }

    /**
     * 取星期 dateUtility.getWeek(null)
     * @param date
     * @return
     */
    public String getWeek(Date date){
        if(date == null)
            date = new Date();

        sdf = new SimpleDateFormat(WEEK);
        return sdf.format(date);
    }

    /**
     * 取当前时间 dateUtility.getDateTime(new Date(), null)
     * @param date 为Null则取当前时间
     * @param template 默认:yyyy-MM-dd HH:mm:ss
     * @return
     */
    public String getDateTime(Date date,String template) {
        if(date == null)
            date = new Date();
        if(template == null || template.equals("")){
            template = DEFAULT;
        }

        sdf = new SimpleDateFormat(template, Locale.CHINA);

        return sdf.format(date);
    }

    /**
     * 取月份 dateUtility.getMonth(null)
     * @param date
     * @return
     */
    public String getMonth(Date date) {
        if(date == null){
            date = new Date();
        }
        sdf = new SimpleDateFormat("MM");
        return sdf.format(date);
    }

    /**
     * 取年份 dateUtility.getYear(null)
     * @param date
     * @return
     */
    public String getYear(Date date) {
        if(date == null){
            date = new Date();
        }
        sdf = new SimpleDateFormat("yyyy");
        return sdf.format(date);
    }

    /**
     * 取当前日 dateUtility.getDate(null)
     * @param date
     * @return
     */
    public String getDate(Date date) {
        if(date == null){
            date = new Date();
        }
        sdf = new SimpleDateFormat("dd");
        return sdf.format(date);
    }


    /**
     * 格式化日期时间 dateUtility.formatDateToDateTimeWeek(null)
     * @param date
     * @return 返回时间星期
     */
    public String formatDateToDateTimeWeek(Date date) {
        if(date == null)
            date = new Date();

        String _week = getWeek(null);
        String _time = getDateTime(date,"");

        return _time + " " + _week;
    }

    /**
     * 格式化日期时间 dateUtility.formatDateToDate(null)
     * @param date
     * @return 返回日期 yyyy-MM-dd
     */
    public String formatDateToDate(Date date) {
        if(date == null)
            date = new Date();

        return getDateTime(date,DATE);
    }

    /**
     * 格式化日期时间 dateUtility.formatDateToTime(null)
     * @param date
     * @return 返回时间 HH:mm:ss
     */
    public String formatDateToTime(Date date) {
        if(date == null)
            date = new Date();

        return getDateTime(date, TIME);
    }

    /**
     * 当前日期到时间
     * @param calendar
     * @return
     */
    public Date calendarToDate(Calendar calendar) {
        return calendar.getTime();
    }

    /**
     *  取时间间隔(第二个时间减去第一个时间) dateUtility.getDaysBetweenTwoDate(new Date(), dateUtility.strToDate("2016-05-22 00:12:15",null)))
     * @param firstDate 第一个时间
     * @param secondDate 第二个时间
     * @return 返回天数
     */
    public int getDaysBetweenTwoDate(Date firstDate, Date secondDate) {
        int nDay = (int) ((secondDate.getTime() - firstDate.getTime()) / (24 * 60 * 60 * 1000));
        return nDay;
    }

    /**
     * 指定时间加、减指定的时间单位
     *
     * @param calendarFinal
     *            Calendar类中代表时间的字段常量
     *            Calendar.YEAR 年
     *            Calendar.MONTH 月(月份从0开始)
     *            Calendar.DATE 日
     *            Calendar.HOUR 时
     *            Calendar.MINUTE 分
     *            Calendar.SECOND 秒
     * @param date
     *            指定时间
     * @param times
     *            相加或减的时间,相加传正数,相减传负数
     * @return 相加或相减后的时间
     */
    public Date addOrMinusTimes(int calendarFinal, Date date, int times) {
        if(date == null)
            date = new Date();

        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(calendarFinal, times);

        return calendar.getTime();
    }

    /**
     * 天数增加或者减少 dateUtility.addDays(null, 4), null)
     * @param date 如果为null则取当前时间
     * @param days 要增加或者减少的天数
     * @return
     */
    public Date addDays(Date date, int days) {
        if(date == null)
            date = new Date();

        return addOrMinusTimes(Calendar.DATE, date, days);
    }

    /**
     * 时间增加或减少月份 dateUtility.addMonths(null, 2), null)
     * @param date 如果为null则取当前时间
     * @param months 要增加或者减少的月份
     * @return
     */
    public Date addMonths(Date date, int months) {
        if(date == null)
            date = new Date();

        return addOrMinusTimes(Calendar.MONTH, date, months);
    }

    /**
     * 日期时间格式验证 dateUtility.validateDateFormat("2016-06-16","yyyy-MM-dd")
     * @param str 如:2010-01-01 00:00
     * @param tmpl 如:yyyy-MM-dd HH:mm
     * @return 返回 false 验证失败
     */
    public boolean validateDateFormat(String str, String tmpl) {
        sdf = new SimpleDateFormat(tmpl);
        sdf.setLenient(false);

        Date date = null;
        try {
            date = sdf.parse(str);
        } catch (ParseException e) {
            e.printStackTrace();
            return false;
        }

        return str.equals(sdf.format(date));
    }

    /**
     *  字符串转换成时间 dateUtility.strToDate("2016-05-22 00:12:15",null)
     * @param time 如:2016-01-01 00:00:00
     * @param tmpl 如:yyyy-MM-dd HH:mm:ss
     * @return 返回Date时间对象
     */
    public Date strToDate(String time,String tmpl){
        if(tmpl == null || tmpl.equals(""))
            tmpl = DEFAULT;

        sdf = new SimpleDateFormat(tmpl);
        Date date = null;
        try {
            date = sdf.parse(time);
        } catch (ParseException e) {
            e.printStackTrace();
        }

        return date;
    }


}

Leave a Comment

 
Copyright © 2008-2021 lanxinbase.com Rights Reserved. | 粤ICP备14086738号-3 |