1小时 1分钟之前 java 处理
2015-06-19 11:43
459 查看
例如:1小时前 1分钟前 10天前
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 = "2015-06-19 11:32:59"; date = simple.parse(before); System.out.println(DateUtils.fromToday(date)); // System.out.println(DateUtils.getFullDate()); // System.out.println(DateUtils.getDate()); } }
相关文章推荐
- java.util.Scanner的使用
- eclipse中文字体大小修改,让中英文字体协调
- Java 语言特点
- java.lang.OutOfMemoryError:GC overhead limit exceeded填坑心得
- eclipse配置自动生成ndk javah文件
- java中使用list.remove需要注意的问题
- Spring技术内幕——Spring Framework的IOC容器实现(五)(大结局)
- 我是菜鸟:java密码学的应用
- Java 代码获取Cordys令牌,获取Cordys相应WebService数据
- [Java]匿名内部类
- java中String s="abc"及String s=new String("abc")详解
- Java class cannot be resolved
- Java-马士兵设计模式学习笔记-观察者模式-OOD线程
- 什么是Java集合API?
- jdk:Arrays.asList&Collection.toArray
- Java文件打包成exe,在未配置安装JDK和未配置的电脑上运行
- eclipse+php+wamp配置
- Eclipse中SVN切换用户名
- eclipse 操作笔记
- String format specifier