仿微信朋友圈时间显示 根据时间获取几分钟前,几小时前,几天前,几月前,几年前
友好时间显示函数
=====================本文描述了一个友好时间显示函数,根据当前时间和指定时间差异计算出几分钟前、几小时前、几天前、几月前或几年前的时间。
函数定义
-------------
```java/
* 显示几天钱几周前几月前几年前 * @param d 指定时间 * @return 友好时间显示结果 */
public static String getFriendlytime(Date d){
long delta = (new Date().getTime()-d.getTime())/1000;
// 计算时间差异(秒)
if(delta < 60) {
return "刚刚";
} else if(delta < 3600) {
// 小于一小时 return String.format("%d分钟前", delta /60);
} else if(delta < 86400) {
// 小于一天 return String.format("%d小时前", delta /3600);
} else if(delta < 2592000) {
// 小于30天(约1个月)
return String.format("%d天前", delta /86400);
} else if(delta < 31536000) {
// 小于365天(约1年)
return String.format("%d月前", delta /2592000);
} else {
// 大于或等于365天 return String.format("%d年前", delta /31536000);
}
}
```
函数解释
-------------
本函数首先计算出当前时间和指定时间之间的秒数差异(delta)。然后根据delta的值进行不同的处理:
* 如果delta小于60,表示时间差异小于一分钟,返回“刚刚”。
* 如果delta介于60到3600之间(即1分钟到1小时),则计算出相应的分钟数,并返回“X分钟前”。
* 如果delta介于3600到86400之间(即1小时到1天),则计算出相应的小时数,并返回“X小时前”。
* 如果delta介于86400到2592000之间(即1天到30天,约1个月),则计算出相应的天数,并返回“X天前”。
* 如果delta介于2592000到31536000之间(即30天到365天,约1年),则计算出相应的月数,并返回“X月前”。
* 如果delta大于或等于31536000,则计算出相应的年数,并返回“X年前”。
示例
--------
```javaDate now = new Date();
Date yesterday = new Date(now.getTime() -86400000);
System.out.println(getFriendlytime(yesterday)); // 输出:1天前Date lastWeek = new Date(now.getTime() -604800000);
System.out.println(getFriendlytime(lastWeek)); // 输出:7天前Date lastMonth = new Date(now.getTime() -2592000000);
System.out.println(getFriendlytime(lastMonth)); // 输出:1月前Date lastYear = new Date(now.getTime() -31536000000);
System.out.println(getFriendlytime(lastYear)); // 输出:1年前```
本函数可以方便地在程序中使用友好时间显示功能,提高用户体验。