原创文章,如有转载,请注明出处:http://blog.csdn.net/yihui823/article/details/6832926
例如我们可以得到文章的发表时间。如果我们只是呆板的显示:2011年##月##日 11时11分11秒
将是多么无趣的事情。
现在做了一个共通,传入时间,可以根据这个时间与当前时间的时间差,分别得到:
##天前
##小时前
刚才
等等。
代码如下:
/**
* 计算动态时间显示格式
* @param dynamicTime 原始时间,格式:"YYYY/MM/DD HH24:MI:SS"
* @return 显示的时间
*/
public String getTimeForShowing(String strTime)
{
//年
int year = Integer.parseInt(strTime.substring(0, 4));
//月
int month = Integer.parseInt(strTime.substring(5, 7));
//日期
int day = Integer.parseInt(strTime.substring(8, 10));
//小时
int hour = Integer.parseInt(strTime.substring(11, 13));
//分钟
int minute = Integer.parseInt(strTime.substring(14, 16));
//秒
int second = Integer.parseInt(strTime.substring(17, 19));
Calendar now = Calendar.getInstance();
Calendar dynamicT = Calendar.getInstance();
dynamicT.set(year, month - 1, day, hour, minute, second);
long intermill = (now.getTimeInMillis() - dynamicT.getTimeInMillis()) / 1000;
if (intermill < 60) {
//60秒以内
return "刚才";
} else if (intermill < 3600) {
//60分钟以内
return (intermill / 60) + "分钟前";
} else if (intermill < 3600 * 24) {
//24小时以内
return (intermill/(3600)) + "小时前";
} else if (intermill < 3600 * 24 * 30) {
//一个月以内
return (intermill / (3600 * 24)) + "天前";
} else if (intermill < 3600 * 24 * 365) {
//一年以内
return getFormatedNumber(month) + "月" + getFormatedNumber(day) + "日";
} else {
//一年以上
StringBuffer buff = new StringBuffer(Integer.toString(year)).append("年");
buff.append(getFormatedNumber(month)).append("月");
buff.append(getFormatedNumber(day)).append("日");
return buff.toString() ;
}
}
原始代码可以在csdn中下载:
http://download.csdn.net/detail/yihui823/3646151