- 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.phpxs.com/code/1002418/