关系时间工具类

  作者:记性不好的阁主


package cn.ucmed.merger.util;

import org.apache.commons.lang.StringUtils;

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

/**
* 几秒前,几分钟前,几小时前,几天前,几月前,几年前的实现
*
* @author HJH
* @since 2017-11-17
**/
public class RelativeDateFormat {

private static final Long ONE_MINUTE = 60000L;
private static final Long TEN_MINUTE = 60000L * 10;
private static final Long ONE_HOUR = 3600000L;
private static final Long ONE_DAY = 86400000L;
private static final Long ONE_MONTH = ONE_DAY * 30;
private static final Long ONE_YEAR = ONE_DAY * 365;

private static final String JUST_NOW_MSG = "刚才";
private static final String MINUTE_MSG = "分钟前";
private static final String HOUR_MSG = "小时前";
private static final String DAY_MSG = "天前";
private static final String MONTH_MSG = "个月前";
private static final String YEAR_MSG = "年前";

public static String calculateTime(Date date) {
if (date == null) {
return null;
}
Long delta = System.currentTimeMillis() - date.getTime();
if (delta < TEN_MINUTE) {
return JUST_NOW_MSG;
}
if (delta < ONE_HOUR) {
return getMinutesMsg(delta);
}
if (delta < ONE_DAY) {
return getHoursMsg(delta);
}
if (delta < ONE_MONTH) {
return getDayMsg(delta);
}
if (delta < ONE_YEAR) {
return getMonthMsg(delta);
}
return getYearMsg(delta);
}

public static String calculateWaitTime(String time) {
if (StringUtils.isBlank(time)) {
return "-";
}
Long delta = Long.parseLong(time);
String waitTime;
if (delta < ONE_HOUR) {
waitTime = getMinutes(delta);
}else {
if (delta > ONE_HOUR * 15) {
delta = ONE_HOUR * 15;
}
waitTime = getHoursMsg(delta);
}
return waitTime.substring(0, waitTime.length() - 1);
}

private static String getMinutes(Long date) {
Long ten = date / ONE_MINUTE;
return ten + MINUTE_MSG;
}

private static String getMinutesMsg(Long date) {
Long ten = date / TEN_MINUTE;
return ten * 10 + MINUTE_MSG;
}

private static String getHoursMsg(Long date) {
Long one = date / ONE_HOUR;
return one + HOUR_MSG;
}

private static String getDayMsg(Long date) {
Long one = date / ONE_DAY;
return one + DAY_MSG;
}

private static String getMonthMsg(Long date) {
Long one = date / ONE_MONTH;
return one + MONTH_MSG;
}

private static String getYearMsg(Long date) {
Long one = date / ONE_YEAR;
return one + YEAR_MSG;
}

private static Long toSeconds(Long date) {
return date / 1000L;
}

private static Long toMinutes(Long date) {
return toSeconds(date) / 60L;
}

private static Long toHours(Long date) {
return toMinutes(date) / 60L;
}

private static Long toDays(Long date) {
return toHours(date) / 24L;
}

private static Long toMonths(Long date) {
return toDays(date) / 30L;
}

private static long toYears(long date) {
return toMonths(date) / 365L;
}


public static void main(String[] args) throws ParseException {

Date date = new SimpleDateFormat("yyyy-MM-dd").parse("2019-06-09");
String time = "1574845361000";
System.out.println(calculateTime(date));
System.out.println(calculateWaitTime(time));
}

}



相关推荐

评论 抢沙发

表情

分类选择