把日期时间转换成xx秒前、xx分钟前、xx小时前 距离截止日期

package com.example.list_test;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * 描述:DateUtils
 *
 * @author 何志鹏
 * @ClassName:DateUtils
 * @create 2019-06-05 15:08
 * Version 1.0
 */
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
         *  2019-06-05
         */
        public static String getDate() {
            return getYear() + "-" + getMonth() + "-" + getDay();
        }

        /**
         * @param format
         * @return
         * yyyy年MM月dd HH:mm
         * MM-dd HH:mm 2019-06-05
         *
         */
        public static String getDate(String format) {
            SimpleDateFormat simple = new SimpleDateFormat(format);
            return simple.format(calendar.getTime());
        }

        /**
         *
         * @return yyyy-MM-dd HH:mm
         * 2019-06-05 15:14
         */
        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
         *  2019-06-05 15:14: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 = "2019-06-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("============距离截止日期还有多长时间=====================");
            System.out.println(DateUtils.fromDeadline(date));

            String deadline2 = "2019-06-05 12:45:59";
            Date date2 = new Date();
            SimpleDateFormat simple2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            date2 = simple2.parse(deadline2);
            System.out.println("============距离今天的绝对时间=====================");
            System.out.println(DateUtils.toToday(date2));

            String before = "2018-12-12 0:0:59";
            date = simple.parse(before);
            System.out.println("============距离今天多久=====================");
            System.out.println(DateUtils.fromToday(date));
            System.out.println("============获取当前时间(年月日 时分秒)=====================");
            System.out.println(DateUtils.getFullDate());
            System.out.println("============获取当前时间(年月日)=====================");
            System.out.println(DateUtils.getDate());


        }



}
发布了99 篇原创文章 · 获赞 26 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/weixin_39643007/article/details/90903688