TimeUtil.java 4.17 KB

package com.wd.foundation.bean.utils;

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

import android.text.TextUtils;

public class TimeUtil {
    public static final SimpleDateFormat datetimeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    private TimeUtil() {
    }

    /**
     * 格式化毫秒数为 xx:xx:xx这样的时间格式。
     *
     * @param ms 毫秒数
     * @return 格式化后的字符串
     */
    public static String formatMs(long ms) {
        int seconds = (int) (ms / 1000);
        int finalSec = seconds % 60;
        int finalMin = seconds / 60 % 60;
        int finalHour = seconds / 3600;

        StringBuilder msBuilder = new StringBuilder("");
        if (finalHour > 9) {
            msBuilder.append(finalHour).append(":");
        } else if (finalHour > 0) {
            msBuilder.append("0").append(finalHour).append(":");
        }

        if (finalMin > 9) {
            msBuilder.append(finalMin).append(":");
        } else if (finalMin > 0) {
            msBuilder.append("0").append(finalMin).append(":");
        } else {
            msBuilder.append("00").append(":");
        }

        if (finalSec > 9) {
            msBuilder.append(finalSec);
        } else if (finalSec > 0) {
            msBuilder.append("0").append(finalSec);
        } else {
            msBuilder.append("00");
        }

        return msBuilder.toString();
    }

    /**
     * type = holiday 日期转换为毫秒值
     *
     * @param date yyyy-MM-dd HH:mm:ss
     *        2022-11-25 19:00:01
     */
    public static Long jsonToTimeInMillis2(String date) {
        if (TextUtils.isEmpty(date)) {
            return 0L;
        }
        Long jsonToTm = 0L;
        Date newDate = new Date();

        try {
            newDate = datetimeFormat.parse(date);// datetimeFormat
            jsonToTm = newDate.getTime();
        } catch (ParseException e) {
            e.printStackTrace();
        }

        return jsonToTm;
    }

    /**
     * 转化时间输入时间与当前时间的间隔
     *
     * @param timestamp
     * @return
     */
    public static String conversionTime(long timestamp) {
        return conversionTime(timestamp, false);

    }

    /**
     * 转化时间输入时间与当前时间的间隔
     *
     * @param timestamp
     * @param showCurrentYear true展示当年年份,false当年的不显示年/跨年显示年份
     * @return
     */
    public static String conversionTime(long timestamp, boolean showCurrentYear) {
        // 因为牵扯到 小时分钟秒 的比较,所以需要用到这个方法
        long currentSeconds = Calendar.getInstance().getTimeInMillis();
        // 与现在时间相差豪秒数
        long timeGap = currentSeconds - timestamp;

        String timeStr = "";

        // 48小时以上
        if (timeGap >= 60 * 60 * 1000 * 48) {
            Date date = new Date(timestamp);
            Calendar c = Calendar.getInstance();
            c.setTime(date);
            if (showCurrentYear) {
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
                timeStr = sdf.format(date);
            } else {
                Calendar currentCalendar = Calendar.getInstance();
                if (currentCalendar.get(Calendar.YEAR) == c.get(Calendar.YEAR)) {
                    SimpleDateFormat sdf = new SimpleDateFormat("MM-dd");
                    timeStr = sdf.format(date);
                } else {
                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
                    timeStr = sdf.format(date);
                }
            }
        }
        // 大于24且小于72小时
        else if (timeGap > 60 * 60 * 1000 * 24) {
            timeStr = (timeGap / (60 * 60 * 1000 * 24)) + "天前";
        }
        // 1小时-24小时
        else if (timeGap > 60 * 60 * 1000) {
            timeStr = timeGap / (60 * 60 * 1000) + "小时前";
        }
        // 1分钟-59分钟
        else if (timeGap > 60 * 1000) {
            timeStr = timeGap / (60 * 1000) + "分钟前";
        }
        // 1秒钟-59秒钟
        else {
            timeStr = "刚刚";
        }
        return timeStr;

    }
}