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;
    }
}

结语

获取当天日期 获取本周一日期 获取本周日的日期 获取上周一日期:" + tt.getPreviousWeekday("yyyy-MM-dd")); 获取上周日日期:" + tt.getPreviousWeekSunday("yyyy-MM-dd")); 获取上周一日期:" + tt.getWeekday(-1, "yyyy-MM-dd")); 获取上周日日期:" + tt.getWeekSunday(-1, "yyyy-MM-dd")); 获取下周一日期:" + tt.getNextMonday("yyyy-MM-dd")); 获取下周日日期:" + tt.getNextSunday("yyyy-MM-dd")); 获取本月第一天日期:" + tt.getFirstDayOfMonth()); 获取本月最后一天日期:" + tt.getDefaultDay()); 获取上月第一天日期:" + tt.getPreviousMonthFirst("yyyy-MM-dd")); 获取上月最后一天的日期:" + tt.getPreviousMonthEnd("yyyy-MM-dd")); 获取某月第一天日期:" + tt.getMonthFirst(0, "yyyy-MM-dd")); 获取某月最后一天的日期:" + tt.getMonthEnd(0, "yyyy-MM-dd")); 获取下月第一天日期:" + tt.getNextMonthFirst("yyyy-MM-dd")); 获取下月最后一天日期:" + tt.getNextMonthEnd("yyyy-MM-dd")); 获取本年的第一天日期:" + tt.getCurrentYearFirst()); 获取本年最后一天日期:" + tt.getCurrentYearEnd()); 获取去年的第一天日期:" + tt.getPreviousYearFirst()); 获取去年的最后一天日期:" + tt.getPreviousYearEnd()); 获取明年第一天日期:" + tt.getNextYearFirst()); 获取明年最后一天日期:" + tt.getNextYearEnd()); 获取本季度第一天:" + tt.getThisSeasonFirstTime(11)); 获取本季度最后一天:" + tt.getThisSeasonFinallyTime(11)); 获取两个日期之间间隔天数 获取当前月的第几周:" + tt.getWeekOfMonth()); 获取当前年份:" + tt.getYear()); 获取当前月份:" + tt.getMonth()); 获取今天在本年的第几天:" + tt.getDayOfYear()); 获得今天在本月的第几天(获得当前日):" + tt.getDayOfMonth()); 获得今天在本周的第几天:" + tt.getDayOfWeek()); 字符串转时间 获得一个日期所在周的星期几的日期
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值