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

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/10122.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论