package com.file.action;
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());
}
}