TimeTools.java 3.75 KB
package com.wd.common.utils;

import android.text.TextUtils;

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

/**
 * @Author LiuKun
 * @date:2023/5/16
 * @desc:评论时间专用
 */
public class TimeTools {

    /**
     * 格式化效果
     */
    private static final SimpleDateFormat DATETIME_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    /**
     * 时间转换
     */
    public static String conversionTimeForm(String dateTime) {
        return conversionTimeForm(dateTime,true);
    }

    /**
     * 时间转换
     * @param dateTime 时间毫秒数
     * @param showCurrentYear true显示当年年份,false当年的不显示年/跨年显示年份
     */
    public static String conversionTimeForm(String dateTime, boolean showCurrentYear) {
        try {
            if (TextUtils.isEmpty(dateTime)) {
                return "";
            }
            long l = dateToStampForm(dateTime);
            if(showCurrentYear){
                return conversionTime(l);
            }else{
                return conversionTime(l,false);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "";
    }

    /**
     * 将时间转换为时间戳
     *
     * @param dateString
     * @return 时间戳
     */
    public static long dateToStampForm(String dateString) throws ParseException {
        long ts = 0;
        if (!TextUtils.isEmpty(dateString)) {
            Date date = DATETIME_FORMAT.parse(dateString);
            ts = date.getTime();
        }
        return ts;
    }

    /**
     * 转化时间输入时间与当前时间的间隔
     *
     * @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;

    }
}