java 实现 发布了多久的时间描述:几分钟前,几小时前,几天前,几个月前,几年前

拼搏现实的明天。 2023-06-29 05:42 74阅读 0赞

测试:

  1. @Test
  2. public void time() {
  3. String time = "2017-10-26 15:33:00";
  4. Date date = strToDateLong(time);
  5. System.out.println(timeUtile(date));
  6. }

工具:

  1. public static Date strToDateLong(String strDate) {
  2. SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  3. ParsePosition pos = new ParsePosition(0);
  4. Date strtodate = formatter.parse(strDate, pos);
  5. return strtodate;
  6. }
  7. String timeUtile(Date inTime) {
  8. // 拿到当前时间戳和发布时的时间戳,然后得出时间戳差
  9. Date curTime = new Date();
  10. long timeDiff = curTime.getTime() - inTime.getTime();
  11. //上面一行代码可以换成以下(兼容性的解决)
  12. // 单位换算
  13. long min = 60 * 1000;
  14. long hour = min * 60;
  15. long day = hour * 24;
  16. long week = day * 7;
  17. long month = week * 4;
  18. long year = month * 12;
  19. DecimalFormat df = new DecimalFormat("#");
  20. // 计算发布时间距离当前时间的周、天、时、分
  21. double exceedyear = Math.floor(timeDiff / year);
  22. double exceedmonth = Math.floor(timeDiff / month);
  23. double exceedWeek = Math.floor(timeDiff / week);
  24. double exceedDay = Math.floor(timeDiff / day);
  25. double exceedHour = Math.floor(timeDiff / hour);
  26. double exceedMin = Math.floor(timeDiff / min);
  27. // 最后判断时间差到底是属于哪个区间,然后return
  28. if (exceedyear < 100 && exceedyear > 0) {
  29. return df.format(exceedyear) + "年前";
  30. } else {
  31. if (exceedmonth < 12 && exceedmonth > 0) {
  32. return df.format(exceedmonth) + "月前";
  33. } else {
  34. if (exceedWeek < 4 && exceedWeek > 0) {
  35. return df.format(exceedWeek) + "星期前";
  36. } else {
  37. if (exceedDay < 7 && exceedDay > 0) {
  38. return df.format(exceedDay) + "天前";
  39. } else {
  40. if (exceedHour < 24 && exceedHour > 0) {
  41. return df.format(exceedHour) + "小时前";
  42. } else {
  43. return df.format(exceedMin) + "分钟前";
  44. }
  45. }
  46. }
  47. }
  48. }
  49. }

发表评论

表情:
评论列表 (有 0 条评论,74人围观)

还没有评论,来说两句吧...

相关阅读