package com.d3.d3xmpp.util;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;
public class DateUtil {
public final static String yyyy = "yyyy";
public final static String MM_dd = "MM-dd";
public final static String dd = "dd";
public final static String yyyy_MM_dd = "yyyy-MM-dd";
public final static String yyyy_MM_dd_HH_mm = "yyyy-MM-dd HH:mm";
public final static String yyyy_MM_dd_HH_mm_ss = "yyyy-MM-dd HH:mm:ss";
public final static String yyyy_MM_dd_HH_mm_ss_SSS = "yyyy-MM-dd HH:mm:ss SSS";
public final static String MM_dd_HH_mm_ss = "MM-dd HH:mm:ss";
public final static String MM_dd_HH_mm = "MM-dd HH:mm";
public final static String yyyy_MM_dd_HH_mm_local = "yyyy��MM��dd�� HH:mm";
/**
* ���ص������ڵ��ַ����������Լ�����ʽ����ʽ����
* @param pattern
* @return
*/
public static String now(String pattern) {
SimpleDateFormat df = new SimpleDateFormat(pattern);
return df.format(Calendar.getInstance().getTime());
}
public static String now_yyyy() {
return now(yyyy);
}
public static String now_MM_dd() {
return now(MM_dd);
}
public static String now_dd() {
return now(dd);
}
public static String now_yyyy_MM_dd() {
return now(yyyy_MM_dd);
}
public static String now_yyyy_MM_dd_HH_mm_ss() {
return now(yyyy_MM_dd_HH_mm_ss);
}
public static String now_yyyy_MM_dd_HH_mm_ss_SSS() {
return now(yyyy_MM_dd_HH_mm_ss_SSS);
}
public static String now_MM_dd_HH_mm_ss() {
return now(MM_dd_HH_mm_ss);
}
/**
* �������
* @param birth
* @return
*/
public static String getAge(String birth) { // �������ĸ�ʽһ��Ҫ��Ӧ1991-05-25
if ("".equals(birth))
return "";
int nowAge = 0;
Date date = strToDateCN_yyyy_MM_dd(birth);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int birth_year = calendar.get(Calendar.YEAR);
int birth_month = calendar.get(Calendar.MONTH);
int birth_day = calendar.get(Calendar.DAY_OF_MONTH);
calendar.setTime(new Date());
int now_year = calendar.get(Calendar.YEAR);
int now_month = calendar.get(Calendar.MONTH);
int now_day = calendar.get(Calendar.DAY_OF_MONTH);
nowAge = now_year - birth_year;
if (now_month < birth_month) {
nowAge--;
} else if (now_month == birth_month && now_day < birth_day) {
nowAge--;
}
if (nowAge < 0)
nowAge = 0;
return "" + nowAge;
}
public static String getStauts(String stime,String rtime){
if(stime == null || rtime == null)
return "";
String status = "";
try {
Date sDate = strToDateLoc_yyyy_MM_dd_HH_mm(stime);
Date rDate = strToDateLoc_yyyy_MM_dd_HH_mm(rtime);
Date nDate = new Date();
if(nDate.getTime() < sDate.getTime())
status = "����";
else if(nDate.getTime() > rDate.getTime()){
status = "�ѽ���";
}
else
status = "������";
} catch (Exception e) {
e.printStackTrace();
status = "";
}
return status;
}
/**
* ������ʾ
* @param timeString
* @return ��Сʱǰ�������
*/
private static String getRecentTime(String timeString,Date date) {
if(timeString == null || "".equals(timeString))
return "";
StringBuilder cn_string = new StringBuilder();
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int day = calendar.get(Calendar.DAY_OF_YEAR); //�·��е���
int week = calendar.get(Calendar.WEEK_OF_YEAR); //������
int hour = calendar.get(Calendar.HOUR_OF_DAY); //ʱ��
int month = calendar.get(Calendar.MONTH)+1; //�·�.��ʾ��
int day_of_week = calendar.get(Calendar.DAY_OF_WEEK)-1; //���е���.��ʾ��
if(day_of_week == 0) day_of_week = 7;
int minute = calendar.get(Calendar.MINUTE); //����.��ʾ��
Calendar nowCalendar = Calendar.getInstance();
nowCalendar.setTime(new Date());
int now_day = nowCalendar.get(Calendar.DAY_OF_YEAR);
int now_week = nowCalendar.get(Calendar.WEEK_OF_YEAR);
int now_hour = nowCalendar.get(Calendar.HOUR_OF_DAY);
int now_minute = nowCalendar.get(Calendar.MINUTE);
//ʱ���ַ���
StringBuilder hoursString = new StringBuilder(""+hour);
StringBuilder minutesString = new StringBuilder(""+minute);
if(hour<10)
hoursString.insert(0, "0");
if(minute<10)
minutesString.insert(0, "0");
if(day == now_day && hour == now_hour && minute == now_minute){
cn_string.append("�ո�");
}
else if(day == now_day && hour == now_hour){
cn_string.append(Math.abs(now_minute - minute)).append("����ǰ");
}
else if((now_day - day >=0) &&(now_day - day < 1) && (now_hour - hour < 24) && (now_hour - hour >0)){
cn_string.append(now_hour-hour).append("Сʱǰ");
}
else if(now_day == day){
cn_string.append("����").append(hoursString).append(":").append(minutesString);
}
else if(now_day - day == 1)
cn_string.append("����").append(hoursString).append(":").append(minutesString);
else if(now_day - day == 2)
cn_string.append("ǰ��").append(hoursString).append(":").append(minutesString);
else if(day - now_day == 1)
cn_string.append("����").append(hoursString).append(":").append(minutesString);
else if(day - now_day == 2)
cn_string.append("����").append(hoursString).append(":").append(minutesString);
else if((week == now_week && day>now_day ) || (week - now_week == 1 && day_of_week == 7))
cn_string.append("��").append(numToUpper(day_of_week)).append(" ").append(hoursString).append(":").append(minutesString);
else if(week - now_week ==1)
cn_string.append("����").append(numToUpper(day_of_week)).append(" ").append(hoursString).append(":").append(minutesString);
else{ //ֱ����ʾ
StringBuilder monthString = new StringBuilder(""+month);
int _day = calendar.get(Calendar.DAY_OF_MONTH); //�·��е���
StringBuilder dayString = new StringBuilder(""+_day);
if(month <10)
monthString.insert(0, "0");
if(_day<10)
dayString.insert(0, "0");
cn_string.append(monthString).append("��").append(dayString).append("��").append(hoursString).append(":").append(minutesString);
}
return cn_string.toString();
}
/**
* 02-01 12:11:56
* @param timeString
* @return
*/
public static String getRecentTimeMM_dd(String timeString){
Date date = strToDateMM_dd(timeString);
return getRecentTime(timeString, date);
}
/**
* 02-01 12:11:56
* @param timeString
* @return
*/
public static String getRecentTimeMM_dd_ss(String timeString){
Date date = strToDateMM_dd_ss(timeString);
return getRecentTime(timeString, date);
}
/**
* 2012��01��03�� 12:55
* @param timeString
* @return
*/
public static String getRecentTimeyyyy_MM_dd(String timeString){
Date date = strToDateLoc_yyyy_MM_dd_HH_mm(timeString);
return getRecentTime(timeString, date);
}
/**
* �Ƿ����죬�ж��Ƿ����ϴ�ͼƬ
* @param runtime
* @return
*/
public static boolean isOver3Day(String runtime){
boolean is = false;
Date runDate = strToDateLoc_yyyy_MM_dd_HH_mm(runtime);
Date now = new Date();
if((now.getTime() - runDate.getTime()) > (3*24*60*60*1000)){
is = true;
}
return is;
}
public static String getHi(){
int nowHour = new Date().getHours();
if(nowHour>=0 && nowHour <6){
return "�賿�ã�";
}
else if(nowHour>=6 && nowHour<12){
return "����ã�";
}
else if(nowHour>=12 && nowHour<18){
return "����ã�";
}
else{
return "���Ϻã�";
}
}
public static final String[] zodiacArr = { "��", "��", "��", "��", "��", "ţ", "��", "��", "��", "��", "��", "��" };
public static final String[] constellationArr = { "ˮƿ��", "˫����", "ĵ����", "��ţ��", "˫����", "��з��", "ʨ����", "��Ů��", "�����",
"��Ы��", "������", "ħ����" };
public static final int[] constellationEdgeDay = { 20, 19, 21, 21, 21, 22, 23, 23, 23, 23, 22, 22 };
/**
* �������ڻ�ȡ��Ф
* @return
*/
public static String date2Zodica(String birth) {
if ("".equals(birth))
return "";
return zodiacArr[Integer.valueOf(birth.split("-")[0]) % 12];
}
/**
* �������ڻ�ȡ����
* @param time
* @return
*/
public static String date2Constellation(String birth) { // �������ĸ�ʽһ��Ҫ��Ӧ1991-05-25
Date date = strToDateCN_yyyy_MM_dd(birth);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int month = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DAY_OF_MONTH);
if (day < constellationEdgeDay[month]) {
month = month - 1;
}
if (month >= 0) {
return constellationArr[month];
}
//default to return ħ��
return constellationArr[11];
}
/**
*
* @param dateString
* yyyy��MM��dd�� HH:mm
* @return like: ���� 15��00
*/
public static String ch_time(String dateString) {
// System.out.println("pppppt-->"+dateString);
String cn_string = null;
Date date = DateUtil.strToDate(dateString);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int hour = calendar.get(Calendar.HOUR_OF_DAY);
int minute = calendar.get(Calendar.MINUTE);
String hString,mString;
if (hour < 10) {
hString = "0" + hour;
}else {
hString = ""+hour;
}
if (minute < 10) {
mString = "0"+minute;
}else {
mString = ""+minute;
}
String time = hString+":"+mString;
hString = null;
mString = null;
//ȥ�������µ�ʱ��
calendar.clear(Calendar.HOUR_OF_DAY);
calendar.clear(Calendar.HOUR);
calendar.clear(Calendar.MINUTE);
calendar.clear(Calendar.SECOND);
calendar.clear(Calendar.MILLISECOND);
Calendar nowCalendar = Calendar.getInstance();
nowCalendar.clear(Calendar.HOUR_OF_DAY);
nowCalendar.clear(Calendar.HOUR);
nowCalendar.clear(Calendar.MINUTE);
nowCalendar.clear(Calendar.SECOND);
nowCalendar.clear(Calendar.MILLISECOND);
long flag = (calendar.getTimeInMillis() - nowCalendar.getTimeInMillis()
) / (1000 * 60 * 60 * 24);
// System.out.println("ppssss->" + flag);
if (flag == 0) {
cn_string = "���� " + time;
} else if (flag == 1) {
cn_string = "���� " + time;
} else if (flag == 2) {
cn_string = "���� " + time;
} else if (flag <= getDatePlus() + 7 && flag > 0) {
if (!getNextWeekDate(calendar).equals("")) {
cn_string = getNextWeekDate(calendar) + time;
} else {
cn_string = dateString;
}
} else {
cn_string = dateString;
}
time = null;
return cn_string;
}
/**
*
* @param date
* @param pattern
* @return
*/
public static String dateToStr(Date date, String pattern) {
if(date == null)
return "";
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
return sdf.format(date);
}
/**
* ������ʱ����ת���ַ��� ��:" 2002-07-01 11:40:02"
*
* @param inDate
* ����ʱ�� " 2002-07-01 11:40:02"
* @return String ת��������ʱ���ַ���
*/
public static String dateToStr_yyyy_MM_dd_HH_mm_ss(Date date) {
return dateToStr(date, yyyy_MM_dd_HH_mm_ss);
}
/**
* ������ʱ����ת���ַ��� ��:" 2002-07-01 11:40:02"
*
* @param inDate
* ����ʱ�� " 2002-07-01 11:40:02"
* @return String ת��������ʱ���ַ���
*/
public static String dateToStr_yyyy_MM_dd_HH_mm(Date date) {
return dateToStr(date, yyyy_MM_dd_HH_mm);
}
/**
* yyyy��MM��dd�� HH:mm
*
* @param date
* @return
*/
public static String dateToStrLocal(Date date) {
return dateToStr(date, yyyy_MM_dd_HH_mm_local);
}
/**
* ������ʱ����ת���ַ��� ��:" 2002-07-01 11:40:02"
*
* @param inDate
* ����ʱ�� " 2002-07-01 11:40:02"
* @return String ת��������ʱ���ַ���
*/
public static String dateToStr_MM_dd_HH_mm_ss(Date date) {
return dateToStr(date, MM_dd_HH_mm_ss);
}
/**
* ��������ת���ַ��� ��:"2002-07-01"
*
* @param inDate
* ���� "2002-07-01"
* @return String ת���������ַ���
*/
public static String dateToStr_yyyy_MM_dd(Date date) {
return dateToStr(date, yyyy_MM_dd);
}
/**
* ���ַ�����(Ӣ�ĸ�ʽ)ת�������� ��: "Tue Dec 26 14:45:20 CST 2000"
*
* @param DateFormatStr
* �ַ��� "Tue Dec 26 14:45:20 CST 2000"
* @return Date ����
*/
public static Date strToDateEN(String shorDateStr) {
Date date = null;
try {
SimpleDateFormat sdf = new SimpleDateFormat(
"EEE MMM dd hh:mm:ss 'CST' yyyy", java.util.Locale.US);
return sdf.parse(shorDateStr);
} catch (Exception e) {
return new Date();
}
}
/**
* ���ַ�����(���ĸ�ʽ)ת�������� ��:"2002-07-01 22:09:55"
*
* @param datestr
* �ַ��� "2002-07-01 22:09:55"
* @return Date ����
*/
public static Date strToDateCN_yyyy_MM_dd_HH_mm_ss(String datestr) {
Date date = null;
try {
SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
date = fmt.parse(datestr);
} catch (Exception e) {
return date;
}
return date;
}
/**
* ���ַ�����(���ĸ�ʽ)ת�������� ��:"2002-07-01 22:09"
*
* @param datestr
* �ַ��� "2002-07-01 22:09"
* @return Date ����
*/
public static Date strToDateCN_yyyy_MM_dd_HH_mm(String datestr) {
Date date = null;
try {
SimpleDateFormat fmt = new SimpleDateFormat(yyyy_MM_dd_HH_mm);
date = fmt.parse(datestr);
} catch (Exception e) {
return date;
}
return date;
}
/**yyyy_MM_dd_HH_mm
* @param datestr
* @return
*/
public static Date strToDateLoc_yyyy_MM_dd_HH_mm(String datestr) {
Date date = null;
try {
SimpleDateFormat fmt = new SimpleDateFormat(yyyy_MM_dd_HH_mm_local);
date = fmt.parse(datestr);
} catch (Exception e) {
return date;
}
return date;
}
/**MM-dd HH:mm
* @param datestr
* @return
*/
public static Date strToDateMM_dd(String datestr) {
Date date = null;
try {
SimpleDateFormat fmt = new SimpleDateFormat(MM_dd_HH_mm);
date = fmt.parse(datestr);
} catch (Exception e) {
return date;
}
return date;
}
/**MM-dd HH:mm
* @param datestr
* @return
*/
public static Date strToDateMM_dd_ss(String datestr) {
Date date = null;
try {
SimpleDateFormat fmt = new SimpleDateFormat(MM_dd_HH_mm_ss);
date = fmt.parse(datestr);
} catch (Exception e) {
return date;
}
return date;
}
/**
*
* @param datestr
* @return
*/
public static Date strToDateCN_yyyy_MM_dd(String datestr) {
Date date = null;
try {
SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
date = fmt.parse(datestr);
} catch (Exception e) {
return date;
}
return date;
}
/**
*
* @param datestr
* yyyy��MM��dd�� HH:mm
* @return
*/
public static Date strToDate(String datestr) {
Date date = null;
try {
SimpleDateFormat fmt = new SimpleDateFormat("yyyy��MM��dd�� HH:mm");
date = fmt.parse(datestr);
} catch (Exception e) {
return date;
}
return date;
}
/**
* ת��util.date-->sql.date
*
* @param inDate
* @return
*/
public static java.sql.Date UtilDateToSqlDate(Date inDate) {
return new java.sql.Date(getDateTime(inDate));
}
private static long getDateTime(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH);
int day = cal.get(Calendar.DATE);
cal.set(year, month, day, 0, 0, 0);
long result = cal.getTimeInMillis();
result = result / 1000 * 1000;
return result;
}
/**
* �����մ����ݿ���������Map��������Timestamp��ʽ����ָ����pattern
*
* @param target
* Ŀ��map,����һ���Ǹմ����ݿ���������
* @param pattern
* ��ʽ����������ȡ
*/
@Deprecated
public static void formatMapDate(Map target, String pattern) {
for (Object item : target.entrySet()) {
Map.Entry entry = (Map.Entry) item;
if (entry.getValue() instanceof Timestamp) {
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
entry.setValue(sdf.format((Timestamp) entry.getValue()));
}
}
}
/**
* ����ת��Ϊ��Сд chenjiandong 20090609 add
*
* @param date
* @param type
* 1;2������ʽ1Ϊ�������ģ�2Ϊ��������
* @return
*/
public static String dataToUpper(Date date, int type) {
Calendar ca = Calendar.getInstance();
ca.setTime(date);
int year = ca.get(Calendar.YEAR);
int month = ca.get(Calendar.MONTH) + 1;
int day = ca.get(Calendar.DAY_OF_MONTH);
return numToUpper(year, type) + "��" + monthToUppder(month, type) + "��"
+ dayToUppder(day, type) + "��";
}
/**
* ������ת��Ϊ��д
*
* @param num
* @param type
* @return
*/
public static String numToUpper(int num, int type) {// typeΪ��ʽ1;2
String u1[] = { "��", "һ", "��", "��", "��", "��", "��", "��", "��", "��" };
String u2[] = { "��", "Ҽ", "��", "��", "��", "��", "½", "��", "��", "��" };
char[] str = String.valueOf(num).toCharArray();
String rstr = "";
if (type == 1) {
for (int i = 0; i < str.length; i++) {
rstr = rstr + u1[Integer.parseInt(str[i] + "")];
}
} else if (type == 2) {
for (int i = 0; i < str.length; i++) {
rstr = rstr + u2[Integer.parseInt(str[i] + "")];
}
}
return rstr;
}
/**
* ������ת��Ϊ��д
*
* @param num
* @return
*/
public static String numToUpper(int num) {
String u1[] = { "��", "һ", "��", "��", "��", "��", "��", "��"};
char[] str = String.valueOf(num).toCharArray();
String rstr = "";
for (int i = 0; i < str.length; i++) {
rstr = rstr + u1[Integer.parseInt(str[i] + "")];
}
return rstr;
}
/**
* ��ת��Ϊ��д
*
* @param month
* @param type
* @return
*/
public static String monthToUppder(int month, int type) {
if (month < 10) {
return numToUpper(month, type);
} else if (month == 10) {
return "ʮ";
} else {
return "ʮ" + numToUpper((month - 10), type);
}
}
/**
* ��ת��Ϊ��д
*
* @param day
* @param type
* @return
*/
public static String dayToUppder(int day, int type) {
if (day < 20) {
return monthToUppder(day, type);
} else {
char[] str = String.valueOf(day).toCharArray();
if (str[1] == '0') {
return numToUpper(Integer.parseInt(str[0] + ""), type) + "ʮ";
} else {
return numToUpper(Integer.parseInt(str[0] + ""), type) + "ʮ"
+ numToUpper(Integer.parseInt(str[1] + ""), type);
}
}
}
/**
* ��õ�ǰ�����뱾������������(��������Ϊһ�����һ��)
*
* @return
*/
public static int getDatePlus() {
Calendar cd = Calendar.getInstance();
// ��ý�����һ�ܵĵڼ��죬�������ǵ�һ�죬����һ�ǵڶ���......
int dayOfWeek = cd.get(Calendar.DAY_OF_WEEK);
if (dayOfWeek == 1) {
return 0;
} else {
return 8 - dayOfWeek;
}
}
/**
*
* @param calendar
* @return
*/
public static String getNextWeekDate(Calendar calendar) {
String date = "";
switch (calendar.get(Calendar.DAY_OF_WEEK)) {
case 1:
date = "������ ";
break;
case 2:
date = "����һ ";
break;
case 3:
date = "���ܶ� ";
break;
case 4:
date = "������ ";
break;
case 5:
date = "������ ";
break;
case 6:
date = "������ ";
break;
case 7:
date = "������ ";
break;
default:
break;
}
return date;
}
public static boolean isToday(String datesString){
boolean isToday = false;
Date date = strToDateCN_yyyy_MM_dd_HH_mm(datesString);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int day = calendar.get(Calendar.DAY_OF_YEAR);
Calendar nowCalendar = Calendar.getInstance();
int nowDay = nowCalendar.get(Calendar.DAY_OF_YEAR);
if (nowDay == day) {
isToday = true;
}
return isToday;
}
}