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

发布时间:2018-04-29作者:spider阅读(2580)

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


    文章转载自:http://www.open-open.com/code/view/1420038382484

1 +1

版权声明

本文章为系统自动抓取,如涉及您的版权,请联系博主进行下架处理

 Java  源码

 请文明留言

0 条评论