仿微博,新闻资讯类APP中列表中时间提示

近段时间,由于项目需要,需要做资讯类APP,其中,要做一个排序列表,列表中每个item中的时间值需要与当前设备的时间作比较,得到一些比较人性化的时间提醒。先把效果图放上:



代码实现:
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * 时间工具类
 * @author ck
 * 2013年11月16日 23:36:40
 */
public class DateUtil
{
	public static final String PATTERN_1 = "MM-dd HH:mm";
	
	public static final String PATTERN_2 = "yyyy-MM-dd HH:mm";
	
	public static final String PATTERN_3 = "yyyy-MM-dd";
	
	/**
	 * 得到一定模式的提示时间
	 * @param time
	 * @param pattern
	 * @return
	 */
	public static String getPatternTime(long time, String pattern)
	{
		SimpleDateFormat format = new SimpleDateFormat(pattern);
		
		return format.format(new Date(time));
	}
	
	/**
	 * 得到比较之后的时间差值
	 * @param date
	 * @return
	 */
	public static String getCompareTime(long date)
	{
		StringBuffer sb = new StringBuffer();
		
		long minMill = 60 * 1000;//1min
		long hourMill = 60 * minMill;//1hour
		long dayMill = 24 * hourMill;//1day
		
		//当前时间
		long now = Calendar.getInstance().getTimeInMillis();
		//相减之后时间差
		long deltime = now - date;
		
		long day = deltime / dayMill;
		if(day > 0)
		{//大于1天
			if(day <= 3)
				sb.append(day + "天前");
			else
				sb.append(getPatternTime(date, PATTERN_3));
		}
		else
		{//小于1天
			
			long hour = deltime / hourMill;
			if(hour > 0)
			{//大于1小时
				sb.append(hour + "小时前");
			}
			else
			{//小于1小时
				
				long minute = deltime / minMill;
				if(minute > 0)
				{//大于1分钟
					sb.append(minute + "分钟前");
				}
				else
				{//小于1分钟
					sb.append("刚刚");
				}
			}
		}
		
		return sb.toString();
	}
}


如果代码中有什么问题,或者你有什么意见,欢迎指定~

猜你喜欢

转载自liucanwen.iteye.com/blog/1976036