package pandy.util;
import java.text.SimpleDateFormat;
import java.sql.Date;
import java.sql.Timestamp;
import java.util.Calendar;
import java.util.Vector;
/**
* Created by Jomson.
* Date: 2004-5-22
* Desc:
*/
public class DateUtil
{
public static String oraDateFormat = "TO_DATE(?, 'yyyy-MM-dd')";
public static String oraDateTimeFormat = "TO_DATE(?, 'yyyy-MM-dd HH24:MI:SS')";
static public SimpleDateFormat MMddYYYY_HHmmss = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
static public SimpleDateFormat yyyy = new SimpleDateFormat("yyyy");
static public SimpleDateFormat yyyyMMdd = new SimpleDateFormat("yyyy-MM-dd");
/**
* �õ���ǰ���ڵ�����
*
* @param day
* @return
*/
public static String getYearMonth(String day)
{
if (day == null) return "";
if (day.length() < 8) return "";
int n = day.lastIndexOf("-");
return day.substring(0, n);
}
/**
* �õ���ǰ���ڵ����
*
* @param day
* @return
*/
public static int getYear(String day)
{
if (day == null) return 0;
if (day.length() < 8) return 0;
return Integer.parseInt(day.substring(0, 4));
}
/**
* �õ���ǰ���ڵ���
*
* @param day
* @return
*/
public static String getMonth(String day)
{
if (day == null) return "0";
if (day.length() < 8) return "0";
int m = day.indexOf("-", 0);
int n = day.lastIndexOf("-");
String temp = day.substring(m + 1, n);
if (temp.length() == 1) temp = "0" + temp;
return temp;
}
/**
* ��util����ת��Ϊ�ַ�����ʽΪyyyy-MM-dd HH:mm:ss
*
* @param date
* @return
*/
public static String date2str(java.util.Date date)
{
if (date == null) return "";
try
{
return MMddYYYY_HHmmss.format(date);
}
catch (Exception e)
{
return "";
}
}
/**
* ��util����ת��Ϊ�ַ�����ʽΪyyyy-mm-dd
*
* @param date
* @return
*/
public static String getDateStr(java.util.Date date)
{
if (date == null) return "";
try
{
return yyyyMMdd.format(date);
}
catch (Exception e)
{
return "";
}
}
/**
* ��sql����ת��Ϊ�ַ�����ʽΪyyyy-mm-dd
*
* @param date
* @return
*/
static public String date2str(java.sql.Date date)
{
if (date == null) return "";
try
{
return yyyyMMdd.format(date);
}
catch (Exception e)
{
return "";
}
}
/**
* ��sql����ת��Ϊ�ַ�����ʽΪyyyy-MM-dd HH:mm:ss
*
* @param date
* @return
*/
static public String dateTime2str(java.sql.Date date)
{
if (date == null) return "";
try
{
return MMddYYYY_HHmmss.format(date);
}
catch (Exception e)
{
return "";
}
}
/**
* ��sqlʱ��ת��Ϊ�ַ�����ʽΪyyyy-MM-dd HH:mm:ss
*
* @param date
* @return
*/
static public String dateTime2str(java.sql.Timestamp date)
{
if (date == null) return "";
try
{
return MMddYYYY_HHmmss.format(date);
}
catch (Exception e)
{
return "";
}
}
/**
* �õ�util���ڵ����ʽΪyyyy
*
* @param date
* @return
*/
static public String getYYYY(java.util.Date date)
{
if (date == null) return "";
return yyyy.format(date);
}
/**
* ��util����ת��Ϊ�ַ�����ʽΪyyyy-mm-dd
*
* @param date
* @return
*/
static public String getyyyyMMdd(java.util.Date date)
{
if (date == null) return "";
return yyyyMMdd.format(date);
}
/**
* String YYYY-MM-DD to java.sql.Date object
*
* @param str
* @return
*/
public static Date str2date(String str)
{
java.sql.Date result = null;
try
{
java.util.Date udate = yyyyMMdd.parse(str);
result = new Date(udate.getTime());
return result;
}
catch (Exception e)
{
System.out.println("DateUtil.str2date(str) Error:e = " + e);
return null;
}
}
/**
* @param handedate
* @return
*/
public static Timestamp str2dateTime(String handedate)
{
Timestamp time = null;
try
{
java.util.Date date = str2utilDate(handedate);
java.util.Date now = new java.util.Date();
date.setHours(now.getHours());
date.setMinutes(now.getMinutes());
date.setSeconds(now.getSeconds());
time = new Timestamp(date.getTime());
return time;
}
catch (Exception e)
{
System.out.println("DateUtil.str2dateTime(str) Error:e = " + e);
return null;
}
}
/**
* ���ַ�������ת��Ϊutil����
*
* @param str
* @return
*/
public static java.util.Date str2utilDate(String str)
{
try
{
java.util.Date udate = yyyyMMdd.parse(str);
return udate;
}
catch (Exception e)
{
System.out.println("DateUtil.str2utilDate(str) Error:e = " + e);
return null;
}
}
/**
* ͨ���ַ������ڵõ��������ǵ�ǰ�����е����ڼ�
*
* @param curday
* @return
*/
public static int getCurWeekDayByStr(String curday)
{
try
{
java.util.Date date = str2utilDate(curday);
Calendar rightNow = Calendar.getInstance();
rightNow.setTime(date);
int week = rightNow.get(Calendar.DAY_OF_WEEK);
return week;
}
catch (Exception e)
{
System.out.println("DateUtil.getYearWeek(str) Error:e = " + e);
return 1;
}
}
/**
* ͨ���ַ������ڵõ��¸�����һ������
*
* @param curday
* @return
*/
public static String getNexWeekDayByStr(String curday)
{
try
{
java.util.Date date = str2utilDate(curday);
Calendar rightNow = Calendar.getInstance();
rightNow.setTime(date);
int week = rightNow.get(Calendar.DAY_OF_WEEK);
if (week == 7) week = 6;
if (week == 1) week = 0;
return getDateStr(new java.util.Date(date.getTime() + (7 - week) * 24 * 3600 * 1000));
}
catch (Exception e)
{
System.out.println("DateUtil.getYearWeek(str) Error:e = " + e);
return "";
}
}
/**
* ͨ���ַ������ڵõ��ϸ�����һ������
*
* @param curday
* @return
*/
public static String getPreWeekDayByStr(String curday)
{
try
{
java.util.Date date = str2utilDate(curday);
Calendar rightNow = Calendar.getInstance();
rightNow.setTime(date);
int week = rightNow.get(Calendar.DAY_OF_WEEK);
if (week == 0) week = 1;
if (week == 7) week = 8;
return getDateStr(new java.util.Date(date.getTime() - week * 24 * 3600 * 1000));
}
catch (Exception e)
{
System.out.println("DateUtil.getYearWeek(str) Error:e = " + e);
return "";
}
}
/**
* ͨ���ַ������ڵõ�����������еĵڼ�������
*
* @param curday
* @return
*/
public static int getMonthWeek(String curday)
{
try
{
java.util.Date date = str2utilDate(curday);
Calendar rightNow = Calendar.getInstance();
rightNow.setTime(date);
return rightNow.get(Calendar.WEEK_OF_MONTH);
}
catch (Exception e)
{
System.out.println("DateUtil.getYearWeek(str) Error:e = " + e);
return 0;
}
}
/**
* ͨ���ַ������ڵõ�����һ���еĵڶ��ٸ�����
*
* @param curday
* @return
*/
public static int getYearWeek(String curday)
{
try
{
java.util.Date date = str2utilDate(curday);
Calendar rightNow = Calendar.getInstance();
rightNow.setTime(date);
return rightNow.get(Calendar.WEEK_OF_YEAR);
}
catch (Exception e)
{
System.out.println("DateUtil.getYearWeek(str) Error:e = " + e);
return 0;
}
}
/**
* ͨ���ַ������ڵõ���������
*
* @param curday
* @return
*/
public static String getCurMonthDayStr(String curday)
{
int year = getYear(curday);
String monthStr = getMonth(curday);
int month = Integer.parseInt(monthStr);
monthStr = String.valueOf(month);
if (monthStr.length() == 1) monthStr = "0" + monthStr;
return year + "-" + monthStr + "-01";
}
/**
* ͨ���ַ������ڵõ��ϸ��µ����ڵ�����
*
* @param curday
* @return
*/
public static String getPreMonthDayStr(String curday)
{
int year = getYear(curday);
String monthStr = getMonth(curday);
int month = Integer.parseInt(monthStr);
if (month <= 1)
{
month = 12;
year = year - 1;
}
else
month = month - 1;
monthStr = String.valueOf(month);
if (monthStr.length() == 1) monthStr = "0" + monthStr;
return year + "-" + monthStr + "-01";
}
/**
* ͨ���ַ������ڵõ��¸��µ����ڵ�����
*
* @param curday
* @return
*/
public static String getNextMonthDayStr(String curday)
{
int year = getYear(curday);
String monthStr = getMonth(curday);
int month = Integer.parseInt(monthStr);
if (month >= 12)
{
month = 1;
year = year + 1;
}
else
month = month + 1;
monthStr = String.valueOf(month);
if (monthStr.length() == 1) monthStr = "0" + monthStr;
return year + "-" + monthStr + "-01";
}
/**
* ͨ���ַ������ڵõ���һ�������
*
* @param curday
* @return
*/
public static String getPreDayStr(String curday)
{
java.util.Date date = str2utilDate(curday);
return date2str(new Date(date.getTime() - 24 * 3600 * 1000));
}
/**
* ͨ���ַ������ڵõ���һ�������
*
* @param curday
* @return
*/
public static String getNextDayStr(String curday)
{
java.util.Date date = str2utilDate(curday);
return date2str(new Date(date.getTime() + 24 * 3600 * 1000));
}
/**
* ͨ���ַ������ڵõ���ǰ���ڵ���������
*
* @param curday
* @return
*/
public static String[] getallweekdate(String curday)
{
String pandy[] = new String[7];
java.util.Date date = str2utilDate(curday);
int day = date.getDay();
String firstday = date2str(new Date(date.getTime() - day * 24 * 3600 * 1000));
for (int i = 0; i < 7; i++)
{
pandy[i] = firstday;
firstday = getNextDayStr(firstday);
}
return pandy;
}
/**
* ͨ����ʼ���ںͽ������ڵõ���֮����������ڵĵ�һ������һ�������
*
* @param startdate
* @param enddate
* @return
*/
public static String[][] getweekfl(String startdate, String enddate)
{
java.util.Date date1 = str2utilDate(startdate);
java.util.Date date2 = str2utilDate(enddate);
long weekcount = (date2.getTime() - date1.getTime()) / (24 * 3600 * 1000 * 7) + 1;
int weekc = (int) weekcount;
if (getCurWeekDayByStr(startdate) > getCurWeekDayByStr(enddate))
{
weekc++;
}
String pandy[][] = new String[weekc][2];
String tempdate = startdate;
for (int i = 0; i < weekc; i++)
{
pandy[i][0] = getallweekdate(tempdate)[0];
pandy[i][1] = getallweekdate(tempdate)[6];
tempdate = getNextDayStr(pandy[i][1]);
}
return pandy;
}
/**
* ͨ����ʼ���ںͽ������ڵõ�֮�������µĵ�һ������һ�������
*
* @param startdate
* @param enddate
* @return
*/
public static Vector getmonthfl(String startdate, String enddate)
{
Vector pandy = new Vector();
String tempdate = getCurMonthDayStr(startdate);
while (tempdate.compareTo(enddate) <= 0)
{
String pan[] = new String[2];
pan[0] = tempdate;
pan[1] = getPreDayStr(getNextMonthDayStr(tempdate));
pandy.add(pan);
tempdate = getNextMonthDayStr(tempdate);
}
return pandy;
}
/**
* ͨ����ʼ���ںͽ������ڵõ�����֮����������ڲ���,�ֿ�
*
* @param startdate
* @param enddate
* @return
*/
public static String getMulday(String startdate, String enddate)
{
String pandy = "";
String tempdate = startdate;
while (tempdate.compareTo(enddate) <= 0)
{
pandy += tempdate + ",";
tempdate = getNextDayStr(tempdate);
}
if (pandy.length() > 0)
pandy = pandy.substring(0, pandy.length() - 1);
return pandy;
}
/**
* ͨ����ʼ���ںͽ������ڵõ�����֮���������ڵĵ�һ������һ�첢��,�ֿ�
*
* @param startdate
* @param enddate
* @return
*/
public static String getMulweekday(String startdate, String enddate)
{
String pandy = "";
String tempdate[][] = getweekfl(startdate, enddate);
for (int i = 0; i < tempdate.length; i++)
{
pandy += tempdate[i][0] + "--" + tempdate[i][1] + ",";
}
if (pandy.length() > 0)
pandy = pandy.substring(0, pandy.length() - 1);
return pandy;
}
/**
* ͨ����ʼ���ںͽ������ڵõ�����֮�������µĵ�һ������һ��������,�ֿ�
*
* @param startdate
* @param enddate
* @return
*/
public static String getMulmonthday(String startdate, String enddate)
{
String pandy = "";
Vector tempdate = getmonthfl(startdate, enddate);
String temp[] = new String[2];
for (int i = 0; i < tempdate.size(); i++)
{
temp = (String[]) tempdate.get(i);
pandy += temp[0] + "--" + temp[1] + ",";
}
if (pandy.length() > 0)
pandy = pandy.substring(0, pandy.length() - 1);
return pandy;
}
/**
* ͨ����ʼʱ��õ�count�������
*
* @param startdate
* @param count
* @return
*/
public static String getAllowDay(String startdate, int count)
{
String pandy = startdate;
for (int i = 0; i < count; i++)
{
pandy = getNextDayStr(pandy);
}
return pandy;
}
/**
* ͨ����ʼʱ��õ�count���ں������
*
* @param startdate
* @param count
* @return
*/
public static String getAllowWeek(String startdate, int count)
{
String pandy = startdate;
for (int i = 0; i < count * 7; i++)
{
pandy = getNextDayStr(pandy);
}
return pandy;
}
/**
* ͨ����ʼʱ��õ�count�º������
*
* @param startdate
* @param count
* @return
*/
public static String getAllowMonth(String startdate, int count)
{
String tempdate = getCurMonthDayStr(startdate);
for (int i = 0; i < count; i++)
{
tempdate = getNextMonthDayStr(tempdate);
}
return tempdate;
}
}