发布时间处理

发布时间处理

/**
 * 描述:
 * 时间:2018/2/13/013
 * 作者:xjh
 */
public class DateTimeFormatUtil {

    private static int year = Calendar.getInstance().get(Calendar.YEAR);

    public static String dateTimeFormatString(long time) {
        String patten;
        // 将时间转换成毫秒
        time = formatMillis(time);
        Date date = new Date(time);
        if (!checkYear(time)) {
            patten = "yyyy.MM.dd HH:mm";
        } else if (checkToday(time)) {
            long diff = (System.currentTimeMillis() - time) / 1000;
            if (diff < 60) {
                return "刚刚";
            }
            if (diff < 3600) {
                return (diff / 60) + "分钟前";
            }
            return (diff / 3600) + "小时前";
        } else if (checkYesterday(time)) {
            patten = "昨天 HH:mm";
        } else if (checkBeforeYesterday(time)) {
            patten = "前天 HH:mm";
        } else {
            patten = "MM.dd HH:mm";
        }
        return new SimpleDateFormat(patten, Locale.getDefault()).format(date);
    }

    /**
     * 将时间转换成毫秒
     */
    private static long formatMillis(long time) {
        if (String.valueOf(time).length() == 10) {
            return time * 1000;
        }
        return time;
    }

    /**
     * 判断是否是当前这一年
     */
    private static boolean checkYear(long timeInSeconds) {
        long millis = formatMillis(timeInSeconds);
        Calendar calendar = Calendar.getInstance();
        calendar.setTimeInMillis(millis);
        if (year == calendar.get(Calendar.YEAR)) {
            return true;
        }
        return false;
    }

    /**
     * 判断是否是当前这天
     */
    private static boolean checkToday(long millisecond) {
        Pair<Long, Long> today = diffDays(0);
        return millisecond >= ((Long) today.first).longValue() && millisecond < ((Long) today.second).longValue();
    }

    /**
     * 根据传入的值获取多少天之前的毫秒的起始毫秒和结束毫秒值
     * @param amount 数量,天数
     * @return 返回对应的起始值
     */
    private static Pair<Long, Long> diffDays(int amount) {
        Calendar startCalendar = Calendar.getInstance();
        if (amount != 0) {
            startCalendar.add(Calendar.DATE, amount);
        }
        startCalendar.set(Calendar.HOUR_OF_DAY, 0);
        startCalendar.set(Calendar.MINUTE, 0);
        startCalendar.set(Calendar.SECOND, 0);
        startCalendar.set(Calendar.MILLISECOND, 0);
        long starTime = startCalendar.getTime().getTime();
        Calendar endCalendar = Calendar.getInstance();
        if (amount != 0) {
            endCalendar.add(Calendar.DATE, amount);
        }
        endCalendar.set(Calendar.HOUR_OF_DAY, 23);
        endCalendar.set(Calendar.MINUTE, 59);
        endCalendar.set(Calendar.SECOND, 59);
        endCalendar.set(Calendar.MILLISECOND, 999);
        return new Pair(Long.valueOf(starTime), Long.valueOf(endCalendar.getTime().getTime()));
    }

    /**
     * 判断是否是昨天
     */
    private static boolean checkYesterday(long millisecond) {
        Pair<Long, Long> yesterday = diffDays(-1);
        return millisecond >= ((Long) yesterday.first).longValue() && millisecond < ((Long) yesterday.second).longValue();
    }

    /**
     * 判断是否是前天
     */
    private static boolean checkBeforeYesterday(long millisecond) {
        Pair<Long, Long> beforeYesterday = diffDays(-2);
        return millisecond >= ((Long) beforeYesterday.first).longValue() && millisecond < ((Long) beforeYesterday.second).longValue();
    }



}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值