前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java时间工具类(把日期时间转换成xx秒前、xx分钟前、xx小时前...)

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

原创
作者头像
用户7999227
修改2021-09-22 10:42:23
2.3K0
修改2021-09-22 10:42:23
举报
文章被收录于专栏:Java小王子
代码语言:javascript
复制
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());
}


}
</pre> 

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档