| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
uyu
9年前发布

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

   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());   }    }