时间相关工具类

/**
 * 时间相关工具类
 */
public final class TimeUtil {
    private static final String TAG = TimeUtil.class.getClass().getSimpleName();
    /* 默认的时间格式 */
    private static final String DEF_FORMAT = "yyyy-MM-dd HH:mm:ss";

    private TimeUtil() {
        throw new UnsupportedOperationException("cannot be instantiated");
    }

    /**
     * 将时间戳转为时间字符串
     *
     * @param millis 时间戳
     * @return 时间字符串
     */
    public static String millis2String(long millis) {
        return millis2String(millis, DEF_FORMAT);
    }

    /**
     * 将时间戳转为时间字符串
     *
     * @param millis 时间戳
     * @param format 时间格式
     * @return 时间字符串
     */
    public static String millis2String(long millis, @Nullable String format) {
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        return sdf.format(new Date(millis));
    }

    /**
     * 将时间字符串转换为时间戳
     *
     * @param timeStr 时间字符串
     * @return 毫秒时间戳
     */
    public static long string2Millis(String timeStr) {
        return TextUtils.isEmpty(timeStr) ? 0 : string2Millis(timeStr, DEF_FORMAT);
    }

    /**
     * 将时间字符串转换为时间戳
     *
     * @param timeStr 时间字符串
     * @param format  时间格式
     * @return
     */
    public static long string2Millis(String timeStr, @Nullable String format) {
        if (TextUtils.isEmpty(timeStr)) return 0;
        long millis = 0;
        try {
            SimpleDateFormat sdf = new SimpleDateFormat(format);
            Date date = sdf.parse(timeStr);
            millis = date.getTime();
        } catch (ParseException e) {
            e.printStackTrace();
            LogUtil.e(TAG, "String2Millis Error ========> timeStr: " + timeStr);
        }
        return millis;
    }

    /**
     * 将时间字符串转为 Date 类型
     *
     * @param timeStr 时间字符串
     * @return Date 类型
     */
    public static Date string2Date(String timeStr) {
        return TextUtils.isEmpty(timeStr) ? null : string2Date(timeStr, DEF_FORMAT);
    }

    /**
     * 将时间字符串转为 Date 类型
     *
     * @param timeStr 时间字符串
     * @param format  时间格式
     * @return Date 类型
     */
    public static Date string2Date(String timeStr, @Nullable String format) {
        if (TextUtils.isEmpty(timeStr)) return null;
        try {
            SimpleDateFormat sdf = new SimpleDateFormat(format);
            return sdf.parse(timeStr);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 将 Date 类型转为时间字符串
     *
     * @param date Date 类型时间
     * @return 时间字符串
     */
    public static String date2String(Date date) {
        return date == null ? null : date2String(date, DEF_FORMAT);
    }

    /**
     * 将 Date 类型转为时间字符串
     * 

格式为 format

* * @param date Date 类型时间 * @param format 时间格式 * @return 时间字符串 */ public static String date2String(Date date, @Nullable String format) { SimpleDateFormat sdf = new SimpleDateFormat(format); return sdf.format(date); } /** * 将 Date 类型转为时间戳 * * @param date Date 类型时间 * @return 毫秒时间戳 */ public static long date2Millis(Date date) { return date == null ? null : date.getTime(); } /** * 将时间戳转为 Date 类型 * * @param millis 毫秒时间戳 * @return Date 类型时间 */ public static Date millis2Date(long millis) { return new Date(millis); } /** * 将时间转换天数、小时数、分钟数、秒数 * * @param timeStr 时间字符串 * @return int[0]: 天数
int[1]: 小时数
int[2]: 分钟数
int[3]: 秒数 */ public static int[] millis2Array(String timeStr) { return millis2Array(timeStr, DEF_FORMAT); } /** * 将时间转换天数、小时数、分钟数、秒数 * * @param timeStr 时间字符串 * @param format 时间格式 * @return int[0]: 天数
int[1]: 小时数
int[2]: 分钟数
int[3]: 秒数 */ public static int[] millis2Array(String timeStr, @Nullable String format) { return TextUtils.isEmpty(timeStr) ? null : millis2Array(string2Millis(timeStr)); } /** * 将时间转换天数、小时数、分钟数、秒数 * * @param date 时间 * @return int[0]: 天数
int[1]: 小时数
int[2]: 分钟数
int[3]: 秒数 */ public static int[] millis2Array(Date date) { return date == null ? null : millis2Array(date.getTime()); } /** * 将时间转换天数、小时数、分钟数、秒数 * * @param millis 毫秒数 * @return int[0]: 天数
int[1]: 小时数
int[2]: 分钟数
int[3]: 秒数 */ public static int[] millis2Array(long millis) { long secondDiff = millis / 1000; int days = (int) (secondDiff / (60 * 60 * 24)); int hours = (int) ((secondDiff - days * (60 * 60 * 24)) / (60 * 60)); int minutes = (int) ((secondDiff - days * (60 * 60 * 24) - hours * (60 * 60)) / 60); int seconds = (int) ((secondDiff - days * (60 * 60 * 24) - hours * (60 * 60) - minutes * 60)); return new int[]{days, hours, minutes, seconds}; } /** * 计算时间差 * * @param startTime 起始时间 * @param endTime 结束时间 * @return 毫秒级时间差 */ public static long caculateTimeDiff(@NonNull Object startTime, @NonNull Object endTime) { return caculateTimeDiff(startTime, endTime, DEF_FORMAT); } /** * 计算时间差 * * @param startTime 起始时间 * @param endTime 结束时间 * @param foramt 时间格式 * @return 毫秒级时间差 */ public static long caculateTimeDiff(@NonNull Object startTime, @NonNull Object endTime, @Nullable String foramt) { long milliStart, milliEnd; if (startTime instanceof String) { milliStart = string2Millis((String) startTime, foramt); } else if (startTime instanceof Long) { milliStart = (long) startTime; } else if (startTime instanceof Date) { milliStart = ((Date) startTime).getTime(); } else { LogUtil.e(TAG, "Error startTime in the caculateTimeDiff () method ========> startTime: " + startTime); throw new UnsupportedOperationException("startTime foramt error"); } if (endTime instanceof String) { milliEnd = string2Millis((String) endTime, foramt); } else if (endTime instanceof Long) { milliEnd = (long) endTime; } else if (endTime instanceof Date) { milliEnd = ((Date) endTime).getTime(); } else { LogUtil.e(TAG, "Error endTime in the caculateTimeDiff () method ========> endTime: " + endTime); throw new UnsupportedOperationException("endTime foramt error"); } return (milliEnd - milliStart); } /** * 计算时间差 * * @param startTime 开始时间 * @param endTime 结束时间 * @return int[0]: 天数
int[1]: 小时数
int[2]: 分钟数
int[3]: 秒数 */ public static int[] caculateTimeDiffArray(@NonNull Object startTime, @NonNull Object endTime) { return caculateTimeDiffArray(startTime, endTime); } /** * 计算时间差 * * @param startTime 开始时间 * @param endTime 结束时间 * @param format 时间格式 * @return int[0]: 天数
int[1]: 小时数
int[2]: 分钟数
int[3]: 秒数 */ public static int[] caculateTimeDiffArray(@NonNull Object startTime, @NonNull Object endTime, @Nullable String format) { return millis2Array(caculateTimeDiff(startTime, endTime, format)); } /** * 比较两个时间的大小 * * @param t1 时间 1 * @param t2 时间 2 * @return {@code true}: t1 >= t2
{@code false}: t1 < t2 */ public static boolean judgeTime(@NonNull Object t1, @NonNull Object t2) { return caculateTimeDiff(t2, t1) >= 0; } }

你可能感兴趣的:(时间相关工具类)