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