Android TimeUtil

转载请注明出处 : https://blog.csdn.net/a512337862/article/details/89917075

前言

时间类型转换工具类

代码

/**
 * Author : BlackHao
 * Time : 2016/8/13 14:05
 * Description : 时间类型转换工具类
 */
public class TimeUtil {

    /**
     * 默认的时间 String 模式
     */
    private static final String DEFAULT_PATTERN = "yyyy-MM-dd HH:mm:ss";

    /**
     * 获取当前时间,并返回 String类型的数据
     *
     * @return 当前时间
     */
    public static String getCurrentTime() {
        return getCurrentTime(DEFAULT_PATTERN);
    }

    /**
     * 获取当前时间,并返回 String类型的数据
     *
     * @return 当前时间
     */
    public static String getCurrentTime(String pattern) {
        String currentTime;
        Date curDate = new Date(System.currentTimeMillis());//获取当前时间
        SimpleDateFormat formatter;
        formatter = new SimpleDateFormat(pattern, Locale.CHINA);
        currentTime = formatter.format(curDate);
        return currentTime;
    }

    /**
     * 通过传入的 Date类型时间,并返回String类型的数据
     */
    public static String formatDateToString(Date curDate, String pattern) {
        String time;
        SimpleDateFormat formatter;
        formatter = new SimpleDateFormat(pattern, Locale.CHINA);
        time = formatter.format(curDate);
        return time;
    }

    /**
     * 通过传入的 Date类型时间,并返回 String类型的数据
     */
    public static String formatDateToString(Date curDate) {
        return formatDateToString(curDate, DEFAULT_PATTERN);
    }

    /**
     * 根据毫秒数返回年月日时分秒
     */
    public static int[] formatMsecToTimeInfo(long msec) {
        int[] dates = new int[6];
        Time t = new Time();
        t.set(msec);
        dates[0] = t.year;
        dates[1] = t.month + 1;
        dates[2] = t.monthDay;
        dates[3] = t.hour;
        dates[4] = t.minute;
        dates[5] = t.second;
        return dates;
    }

    /**
     * 通过枚举来返回当前的 int类型的时间类型(年,月,日,时,分,秒,周几)
     */
    public static int getTimeType(long msec, TimeType type) {
        int time = 0;
        Time t = new Time();
        t.set(msec); // 取得当前系统时间
        switch (type) {
            case YEAR:
                time = t.year;
                break;
            case MONTH:
                time = t.month;
                break;
            case DAY:
                time = t.monthDay;
                break;
            case HOUR:
                time = t.hour;
                break;
            case MINUTE:
                time = t.minute;
                break;
            case SECOND:
                time = t.second;
                break;
            case WEEKDAY:
                time = t.weekDay;
                break;
        }
        return time;
    }

    public enum TimeType {
        YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, WEEKDAY
    }

    /**
     * 将 String("yyyy-MM-dd HH:mm:ss")转换成 Date
     */
    public static Date formatStrToDate(String str) {
        return formatStrToDate(str, DEFAULT_PATTERN);
    }

    /**
     * 将 String转换成 Date
     */
    public static Date formatStrToDate(String str, String pattern) {
        Date date;
        try {
            SimpleDateFormat formatter = new SimpleDateFormat(pattern, Locale.CHINA);
            date = formatter.parse(str);
            return date;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 将毫秒转化成固定格式的时间
     */
    public static String formatMsecToString(long msec) {
        return formatMsecToString(msec, DEFAULT_PATTERN);

    }

    /**
     * 将毫秒转化成固定格式的时间
     */
    public static String formatMsecToString(long msec, String pattern) {
        Date date = new Date();
        try {
            date.setTime(msec);
        } catch (NumberFormatException nfe) {
            nfe.printStackTrace();
        }
        SimpleDateFormat sdf = new SimpleDateFormat(pattern, Locale.CHINA);
        return sdf.format(date);
    }

    /**
     * 将字符串转化成毫秒
     */
    public static long formatStringToMsec(String str, String pattern) {
        Calendar c = Calendar.getInstance();
        try {
            c.setTime(new SimpleDateFormat(pattern, Locale.CHINA).parse(str));
            return c.getTimeInMillis();
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return 0;
    }

    /**
     * 将字符串转化成毫秒
     */
    public static long formatStringToMsec(String str) {
        return formatStringToMsec(str, DEFAULT_PATTERN);
    }

    /**
     * 毫秒转成 时:分:秒
     */
    public static String formatMsec(long ms) {

        int ss = 1000;
        int mi = ss * 60;
        int hh = mi * 60;

        long hour = ms / hh;
        long minute = (ms - hour * hh) / mi;
        long second = (ms - hour * hh - minute * mi) / ss;

        String strHour = hour < 10 ? "0" + hour : "" + hour;//小时
        String strMinute = minute < 10 ? "0" + minute : "" + minute;//分钟
        String strSecond = second < 10 ? "0" + second : "" + second;//秒

        return strHour + ":" + strMinute + ":" + strSecond;
    }

    /**
     * 判断日期是否在两个指定日期之内
     *
     * @param targetDate 需要判断的日期
     * @param startDate  开始日期
     * @param endDate    结束日期
     * @param pattern    时间模式
     */
    public static boolean isBetweenTwoDays(String targetDate, String startDate, String endDate, String pattern) {
        SimpleDateFormat df = new SimpleDateFormat(pattern, Locale.CHINA);
        try {
            Date dt1 = df.parse(startDate);
            Date dt2 = df.parse(endDate);
            Date target = df.parse(targetDate);
            return dt1.getTime() <= target.getTime() && dt2.getTime() >= target.getTime();
        } catch (Exception exception) {
            exception.printStackTrace();
        }
        return false;
    }

    /**
     * 判断日期是否在两个指定日期之内
     *
     * @param targetDate 需要判断的日期
     * @param startDate  开始日期
     * @param endDate    结束日期
     */
    public static boolean isBetweenTwoDays(String targetDate, String startDate, String endDate) {
        return isBetweenTwoDays(targetDate, startDate, endDate, DEFAULT_PATTERN);
    }

    /**
     * 获取指定网站的日期时间(必须在子线程调用),用于获取网络时间
     */
    public static long getWebsiteTime() {
        try {
            String webUrl[] = {"http://www.bjtime.cn", //bjTime
                    "http://www.baidu.com", //百度
                    "http://www.taobao.com",//淘宝
                    "http://www.ntsc.ac.cn", //中国科学院国家授时中心
                    "http://www.time.ac.cn/"};
            for (String aWebUrl : webUrl) {
                URL url = new URL(aWebUrl);// 取得资源对象
                URLConnection uc = url.openConnection();// 生成连接对象
                uc.setConnectTimeout(5 * 1000);
                uc.connect();// 发出连接
                // 读取网站日期时间
                if (uc.getDate() > formatStringToMsec("2016-01-01 00:00:00")) {
                    //只有网络时间大于2016/1/1才表示时间正常
                    return uc.getDate();
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return -1;
    }
}

结语

  • 源码以及测试demo下载地址:https://github.com/LuoChen-Hao/BlackHaoUtil
  • 有任何问题请留言。

你可能感兴趣的:(android,工具类)