Java时间工具类DateUtils(把日期时间转换成xx秒前、xx分钟前、xx小时前...)

 java中给定时间字符串,转换为距离现在几分钟,几天,几周前

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
 
public class DateUtils {
     private static final long ONE_MINUTE = 60 ;
     private static final long ONE_HOUR = 3600 ;
     private static final long ONE_DAY = 86400 ;
     private static final long ONE_MONTH = 2592000 ;
     private static final long ONE_YEAR = 31104000 ;
 
     public static Calendar calendar = Calendar.getInstance();
 
     /**
      *
      * @return yyyy-mm-dd
      *  2012-12-25
      */
     public static String getDate() {
         return getYear() + "-" + getMonth() + "-" + getDay();
     }
 
     /**
      * @param format
      * @return
      * yyyy年MM月dd HH:mm
      * MM-dd HH:mm 2012-12-25
      *
      */
     public static String getDate(String format) {
         SimpleDateFormat simple = new SimpleDateFormat(format);
         return simple.format(calendar.getTime());
     }
 
     /**
      *
      * @return yyyy-MM-dd HH:mm
      * 2012-12-29 23:47
      */
     public static String getDateAndMinute() {
         SimpleDateFormat simple = new SimpleDateFormat( "yyyy-MM-dd HH:mm" );
         return simple.format(calendar.getTime());
     }
 
     /**
      *
      * @return
      *  yyyy-MM-dd HH:mm:ss
      *  2012-12-29 23:47:36
      */
     public static String getFullDate() {
         SimpleDateFormat simple = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" );
         return simple.format(calendar.getTime());
     }
 
     /**
      * 距离今天多久
      * @param date
      * @return
      *
      */
     public static String fromToday(Date date) {
         Calendar calendar = Calendar.getInstance();
         calendar.setTime(date);
 
         long time = date.getTime() / 1000 ;
         long now = new Date().getTime() / 1000 ;
         long ago = now - time;
         if (ago <= ONE_HOUR)
             return ago / ONE_MINUTE + "分钟前" ;
         else if (ago <= ONE_DAY)
             return ago / ONE_HOUR + "小时" + (ago % ONE_HOUR / ONE_MINUTE)
                     + "分钟前" ;
         else if (ago <= ONE_DAY * 2 )
             return "昨天" + calendar.get(Calendar.HOUR_OF_DAY) + "点"
                     + calendar.get(Calendar.MINUTE) + "分" ;
         else if (ago <= ONE_DAY * 3 )
             return "前天" + calendar.get(Calendar.HOUR_OF_DAY) + "点"
                     + calendar.get(Calendar.MINUTE) + "分" ;
         else if (ago <= ONE_MONTH) {
             long day = ago / ONE_DAY;
             return day + "天前" + calendar.get(Calendar.HOUR_OF_DAY) + "点"
                     + calendar.get(Calendar.MINUTE) + "分" ;
         } else if (ago <= ONE_YEAR) {
             long month = ago / ONE_MONTH;
             long day = ago % ONE_MONTH / ONE_DAY;
             return month + "个月" + day + "天前"
                     + calendar.get(Calendar.HOUR_OF_DAY) + "点"
                     + calendar.get(Calendar.MINUTE) + "分" ;
         } else {
             long year = ago / ONE_YEAR;
             int month = calendar.get(Calendar.MONTH) + 1 ; // JANUARY which is 0 so month+1
             return year + "年前" + month + "月" + calendar.get(Calendar.DATE)
                     + "日" ;
         }
 
     }
 
     /**
      * 距离截止日期还有多长时间
      *
      * @param date
      * @return
      */
     public static String fromDeadline(Date date) {
         long deadline = date.getTime() / 1000 ;
         long now = ( new Date().getTime()) / 1000 ;
         long remain = deadline - now;
         if (remain <= ONE_HOUR)
             return "只剩下" + remain / ONE_MINUTE + "分钟" ;
         else if (remain <= ONE_DAY)
             return "只剩下" + remain / ONE_HOUR + "小时"
                     + (remain % ONE_HOUR / ONE_MINUTE) + "分钟" ;
         else {
             long day = remain / ONE_DAY;
             long hour = remain % ONE_DAY / ONE_HOUR;
             long minute = remain % ONE_DAY % ONE_HOUR / ONE_MINUTE;
             return "只剩下" + day + "天" + hour + "小时" + minute + "分钟" ;
         }
 
     }
 
     /**
      * 距离今天的绝对时间
      *
      * @param date
      * @return
      */
     public static String toToday(Date date) {
         long time = date.getTime() / 1000 ;
         long now = ( new Date().getTime()) / 1000 ;
         long ago = now - time;
         if (ago <= ONE_HOUR)
             return ago / ONE_MINUTE + "分钟" ;
         else if (ago <= ONE_DAY)
             return ago / ONE_HOUR + "小时" + (ago % ONE_HOUR / ONE_MINUTE) + "分钟" ;
         else if (ago <= ONE_DAY * 2 )
             return "昨天" + (ago - ONE_DAY) / ONE_HOUR + "点" + (ago - ONE_DAY)
                     % ONE_HOUR / ONE_MINUTE + "分" ;
         else if (ago <= ONE_DAY * 3 ) {
             long hour = ago - ONE_DAY * 2 ;
             return "前天" + hour / ONE_HOUR + "点" + hour % ONE_HOUR / ONE_MINUTE
                     + "分" ;
         } else if (ago <= ONE_MONTH) {
             long day = ago / ONE_DAY;
             long hour = ago % ONE_DAY / ONE_HOUR;
             long minute = ago % ONE_DAY % ONE_HOUR / ONE_MINUTE;
             return day + "天前" + hour + "点" + minute + "分" ;
         } else if (ago <= ONE_YEAR) {
             long month = ago / ONE_MONTH;
             long day = ago % ONE_MONTH / ONE_DAY;
             long hour = ago % ONE_MONTH % ONE_DAY / ONE_HOUR;
             long minute = ago % ONE_MONTH % ONE_DAY % ONE_HOUR / ONE_MINUTE;
             return month + "个月" + day + "天" + hour + "点" + minute + "分前" ;
         } else {
             long year = ago / ONE_YEAR;
             long month = ago % ONE_YEAR / ONE_MONTH;
             long day = ago % ONE_YEAR % ONE_MONTH / ONE_DAY;
             return year + "年前" + month + "月" + day + "天" ;
         }
 
     }
 
     public static String getYear() {
         return calendar.get(Calendar.YEAR) + "" ;
     }
 
     public static String getMonth() {
         int month = calendar.get(Calendar.MONTH) + 1 ;
         return month + "" ;
     }
 
     public static String getDay() {
         return calendar.get(Calendar.DATE) + "" ;
     }
 
     public static String get24Hour() {
         return calendar.get(Calendar.HOUR_OF_DAY) + "" ;
     }
 
     public static String getMinute() {
         return calendar.get(Calendar.MINUTE) + "" ;
     }
 
     public static String getSecond() {
         return calendar.get(Calendar.SECOND) + "" ;
     }
 
     public static void main(String[] args) throws ParseException {
         String deadline = "2012-12-30 12:45:59" ;
         Date date = new Date();
         SimpleDateFormat simple = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" );
         date = simple.parse(deadline);
         System.out.println(DateUtils.fromDeadline(date));
 
         String before = "2012-12-12 0:0:59" ;
         date = simple.parse(before);
         System.out.println(DateUtils.fromToday(date));
 
         System.out.println(DateUtils.getFullDate());
         System.out.println(DateUtils.getDate());
     }
 
}

实用的一个类:
[java]  view plain copy print ?
  1. <span style="font-size:24px;">  
  2. </span><span style="font-size:14px;">import java.text.ParseException;  
  3. import java.text.SimpleDateFormat;  
  4. import java.util.Calendar;  
  5. import java.util.Date;  
  6.   
  7. public class DateUtils {  
  8.      private static final long ONE_MINUTE = 60;  
  9.      private static final long ONE_HOUR = 3600;  
  10.      private static final long ONE_DAY = 86400;  
  11.      private static final long ONE_MONTH = 2592000;  
  12.      private static final long ONE_YEAR = 31104000;  
  13.        
  14.      public static Calendar calendar = Calendar.getInstance();  
  15.        
  16.      /** 
  17.       *  
  18.       * @param timestr 
  19.       * @return 距离现在 
  20.       */  
  21.      public static String fromToday(String timestr){  
  22.          SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");  
  23.          Date date = null;  
  24.             try {  
  25.                 date = df.parse(timestr);  
  26.             } catch (ParseException e) {  
  27.                 e.printStackTrace();  
  28.                 return "未知时间";  
  29.             }  
  30.          Calendar calendar = Calendar.getInstance();  
  31.          calendar.setTime(date);  
  32.            
  33.          long time = date.getTime() / 1000;  
  34.          long now = new Date().getTime() / 1000;  
  35.          long ago = now - time;  
  36.          if(ago <= ONE_HOUR){  
  37.              return ago / ONE_MINUTE + "分钟前";  
  38.          }  
  39.          else if(ago <= ONE_DAY){  
  40.              return ago / ONE_HOUR + "小时" + (ago % ONE_HOUR / ONE_MINUTE)+ "分钟前";  
  41.          }  
  42.          else if(ago <= ONE_DAY * 2){  
  43.              return "昨天" + calendar.get(Calendar.HOUR_OF_DAY) + "点"+ calendar.get(Calendar.MINUTE) + "分";  
  44.          }  
  45.          else if (ago <= ONE_DAY * 3){  
  46.              return "前天" + calendar.get(Calendar.HOUR_OF_DAY) + "点" + calendar.get(Calendar.MINUTE) + "分";  
  47.          }  
  48.          else if (ago <= ONE_MONTH){  
  49.              long day = ago / ONE_DAY;  
  50.              if(day < 7)  
  51.                 return day + "天前" ;  
  52.              else if (day >= 7 && day <14)  
  53.                  return "1周前";  
  54.              else if (day >=14 && day <21)  
  55.                  return "2周前";  
  56.              else if (day >= 21 && day <28)  
  57.                  return "3周前";  
  58.              else   
  59.                  return "4周前";  
  60.          }  
  61.          else if (ago <= ONE_YEAR){  
  62.              long month = ago / ONE_MONTH;  
  63.                 long day = ago % ONE_MONTH / ONE_DAY;  
  64.                 return month + "个月" + day + "天前";  
  65.          }  
  66.          else {  
  67.                 long year = ago / ONE_YEAR;  
  68.                 int month = calendar.get(Calendar.MONTH) + 1;// JANUARY which is 0 so month+1  
  69.                 return year + "年前" + month + "月" + calendar.get(Calendar.DATE)  
  70.                         + "日";  
  71.          }  
  72.      }  
  73.   
  74. }  
  75. </span>  
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值