package com.keju.maomao.util;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
* 日期处理工具类
* @author Zhoujun
* 说明:对日期格式的格式化与转换操作等一系列操作
*/
public class DateUtil {
/**
* 字符串转换成日期 yyyy-MM-dd HH:mm:ss
* @param strFormat 格式定义 如:yyyy-MM-dd HH:mm:ss
* @param dateValue 日期对象
* @return
*/
public static Date stringToDate(String strFormat, String dateValue) {
if (dateValue == null)
return null;
if (strFormat == null)
strFormat = "yyyy-MM-dd HH:mm:ss";
SimpleDateFormat dateFormat = new SimpleDateFormat(strFormat);
Date newDate = null;
try {
newDate = dateFormat.parse(dateValue);
} catch (ParseException pe) {
newDate = null;
}
return newDate;
}
/**
* 日期转成字符串
* @param strFormat 格式定义 如:yyyy-MM-dd HH:mm:ss
* @param date 日期字符串
* @return
*/
public static String dateToString(String strFormat, Date date){
SimpleDateFormat dateFormat = new SimpleDateFormat(strFormat);
return dateFormat.format(date);
}
/**
* 计算两个日期间隔天数
* @param begin
* @param end
* @return
*/
public static int countDays(Date begin, Date end) {
int days = 0;
Calendar c_b = Calendar.getInstance();
Calendar c_e = Calendar.getInstance();
c_b.setTime(begin);
c_e.setTime(end);
while (c_b.before(c_e)) {
days++;
c_b.add(Calendar.DAY_OF_YEAR, 1);
}
return days;
}
/**
* 获取最近的时间
* @param time
* @return
*/
public static String getNearTime(String str1){
String result = "";
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date one;
Date two;
long day = 0;
long hour = 0;
long min = 0;
long sec = 0;
try {
one = df.parse(str1);
two = new Date();
long time1 = one.getTime();
long time2 = two.getTime();
long diff ;
if(time1<time2) {
diff = time2 - time1;
} else {
diff = time1 - time2;
}
day = diff / (24 * 60 * 60 * 1000);
hour = (diff / (60 * 60 * 1000) - day * 24);
min = ((diff / (60 * 1000)) - day * 24 * 60 - hour * 60);
sec = (diff/1000-day*24*60*60-hour*60*60-min*60);
System.out.println(day+"天"+hour+"小时"+min+"分钟"+sec+"秒");
long m = day*24 * 60+hour*60+min;
if(m<=1){
result = "一分钟前";
}else if(m>1 && m<=5){
result = "五分钟前";
}else if(m>5 && m<=30){
result = "半小时前";
}else if(m>30 && m<=60){
result = "一小时前";
}else if(m>60 && m<=60*2){
result = "两小时前";
}else if(m>60*2 && m<=60*24){
result = "一天前";
}else if(m>60*24 && m<=60*24*2){
result = "两天前";
}else if(m>60*24*2 && m<=60*24*7){
result = "一星期前";
}else if(m>60*24*7 && m<=60*24*30){
result = "一个月前";
}else if(m>60*24*30 && m<=60*24*30*6){
result = "六个月前";
}else if(m>60*24*30*6){
result = "很久以前";
}
day = diff / (24 * 60 * 60 * 1000);
hour = (diff / (60 * 60 * 1000) - day * 24);
min = ((diff / (60 * 1000)) - day * 24 * 60 - hour * 60);
sec = (diff/1000-day*24*60*60-hour*60*60-min*60);
} catch (ParseException e) {
}
return result;
}
/**
* 如果是昨天就显示年月日,今天的只显示时间;
*
* @param time
* @return
*/
public static String getConversationTime(String str1) {
String result = "";
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date one;
Date two;
try {
one = df.parse(str1);
two = new Date();
if (one.getYear() == two.getYear()
&& one.getMonth() == two.getMonth()
&& one.getDay() == two.getDay()) {
result = "今天 " + dateToString("HH:mm", one);
;
} else {
result = dateToString("yyyy-MM-dd", one);
}
} catch (ParseException e) {
}
return result;
}
}