通用日期處理函數,日期處理大全
package?com.elink.util;
?
import?java.text.*;
import?java.util.*;
public?class?DateUtil
{
?private?static?final?int[]?dayArray?=?new?int[]
??{?31,?28,?31,?30,?31,?30,?31,?31,?30,?31,?30,?31?};
?private?static?SimpleDateFormat?sdf?=?new?SimpleDateFormat();
?public?static?synchronized?Calendar?getCalendar()
?{
??return?GregorianCalendar.getInstance();
?}
?/**
??@return?String
??*/
?public?static?synchronized?String?getDateMilliFormat()
?{
??Calendar?cal?=?Calendar.getInstance();
??return?getDateMilliFormat(?cal?);
?}
?/**
??@param?cal
??@return?String
??*/
?public?static?synchronized?String?getDateMilliFormat(?java.util.Calendar?cal?)
?{
??String?pattern?=?"yyyy-MM-dd?HH:mm:ss,SSS";
??return?getDateFormat(?cal,?pattern?);
?}
?/**
??@param?date
??@return?String
??*/
?public?static?synchronized?String?getDateMilliFormat(?java.util.Date?date?)
?{
??String?pattern?=?"yyyy-MM-dd?HH:mm:ss,SSS";
??return?getDateFormat(?date,?pattern?);
?}
?/**
??@param?strDate
??@return?java.util.Calendar
??*/
?public?static?synchronized?Calendar?parseCalendarMilliFormat(?String?strDate?)
?{
??String?pattern?=?"yyyy-MM-dd?HH:mm:ss,SSS";
??return?parseCalendarFormat(?strDate,?pattern?);
?}
?/**
??@param?strDate
??@return?java.util.Date
??*/
?public?static?synchronized?Date?parseDateMilliFormat(?String?strDate?)
?{
??String?pattern?=?"yyyy-MM-dd?HH:mm:ss,SSS";
??return?parseDateFormat(?strDate,?pattern?);
?}
?/**
??@return?String
??*/
?public?static?synchronized?String?getDateSecondFormat()
?{
??Calendar?cal?=?Calendar.getInstance();
??return?getDateSecondFormat(?cal?);
?}
?/**
??@param?cal
??@return?String
??*/
?public?static?synchronized?String?getDateSecondFormat(?java.util.Calendar?cal?)
?{
??String?pattern?=?"yyyy-MM-dd?HH:mm:ss";
??return?getDateFormat(?cal,?pattern?);
?}
?/**
??@param?date
??@return?String
??*/
?public?static?synchronized?String?getDateSecondFormat(?java.util.Date?date?)
?{
??String?pattern?=?"yyyy-MM-dd?HH:mm:ss";
??return?getDateFormat(?date,?pattern?);
?}
?/**
??@param?strDate
??@return?java.util.Calendar
??*/
?public?static?synchronized?Calendar?parseCalendarSecondFormat(?String?strDate?)
?{
??String?pattern?=?"yyyy-MM-dd?HH:mm:ss";
??return?parseCalendarFormat(?strDate,?pattern?);
?}
?/**
??@param?strDate
??@return?java.util.Date
??*/
?public?static?synchronized?Date?parseDateSecondFormat(?String?strDate?)
?{
??String?pattern?=?"yyyy-MM-dd?HH:mm:ss";
??return?parseDateFormat(?strDate,?pattern?);
?}
?/**
??@return?String
??*/
?public?static?synchronized?String?getDateMinuteFormat()
?{
??Calendar?cal?=?Calendar.getInstance();
??return?getDateMinuteFormat(?cal?);
?}
?/**
??@param?cal
??@return?String
??*/
?public?static?synchronized?String?getDateMinuteFormat(?java.util.Calendar?cal?)
?{
??String?pattern?=?"yyyy-MM-dd?HH:mm";
??return?getDateFormat(?cal,?pattern?);
?}
?/**
??@param?date
??@return?String
??*/
?public?static?synchronized?String?getDateMinuteFormat(?java.util.Date?date?)
?{
??String?pattern?=?"yyyy-MM-dd?HH:mm";
??return?getDateFormat(?date,?pattern?);
?}
?/**
??@param?strDate
??@return?java.util.Calendar
??*/
?public?static?synchronized?Calendar?parseCalendarMinuteFormat(?String?strDate?)
?{
??String?pattern?=?"yyyy-MM-dd?HH:mm";
??return?parseCalendarFormat(?strDate,?pattern?);
?}
?/**
??@param?strDate
??@return?java.util.Date
??*/
?public?static?synchronized?Date?parseDateMinuteFormat(?String?strDate?)
?{
??String?pattern?=?"yyyy-MM-dd?HH:mm";
??return?parseDateFormat(?strDate,?pattern?);
?}
?/**
??@return?String
??*/
?public?static?synchronized?String?getDateDayFormat()
?{
??Calendar?cal?=?Calendar.getInstance();
??return?getDateDayFormat(?cal?);
?}
?/**
??@param?cal
??@return?String
??*/
?public?static?synchronized?String?getDateDayFormat(?java.util.Calendar?cal?)
?{
??String?pattern?=?"yyyy-MM-dd";
??return?getDateFormat(?cal,?pattern?);
?}
?/**
??@param?date
??@return?String
??*/
?public?static?synchronized?String?getDateDayFormat(?java.util.Date?date?)
?{
??String?pattern?=?"yyyy-MM-dd";
??return?getDateFormat(?date,?pattern?);
?}
?/**
??@param?strDate
??@return?java.util.Calendar
??*/
?public?static?synchronized?Calendar?parseCalendarDayFormat(?String?strDate?)
?{
??String?pattern?=?"yyyy-MM-dd";
??return?parseCalendarFormat(?strDate,?pattern?);
?}
?/**
??@param?strDate
??@return?java.util.Date
??*/
?public?static?synchronized?Date?parseDateDayFormat(?String?strDate?)
?{
??String?pattern?=?"yyyy-MM-dd";
??return?parseDateFormat(?strDate,?pattern?);
?}
?/**
??@return?String
??*/
?public?static?synchronized?String?getDateFileFormat()
?{
??Calendar?cal?=?Calendar.getInstance();
??return?getDateFileFormat(?cal?);
?}
?/**
??@param?cal
??@return?String
??*/
?public?static?synchronized?String?getDateFileFormat(?java.util.Calendar?cal?)
?{
??String?pattern?=?"yyyy-MM-dd_HH-mm-ss";
??return?getDateFormat(?cal,?pattern?);
?}
?/**
??@param?date
??@return?String
??*/
?public?static?synchronized?String?getDateFileFormat(?java.util.Date?date?)
?{
??String?pattern?=?"yyyy-MM-dd_HH-mm-ss";
??return?getDateFormat(?date,?pattern?);
?}
?/**
??@param?strDate
??@return?java.util.Calendar
??*/
?public?static?synchronized?Calendar?parseCalendarFileFormat(?String?strDate?)
?{
??String?pattern?=?"yyyy-MM-dd_HH-mm-ss";
??return?parseCalendarFormat(?strDate,?pattern?);
?}
?/**
??@param?strDate
??@return?java.util.Date
??*/
?public?static?synchronized?Date?parseDateFileFormat(?String?strDate?)
?{
??String?pattern?=?"yyyy-MM-dd_HH-mm-ss";
??return?parseDateFormat(?strDate,?pattern?);
?}
?/**
??@return?String
??*/
?public?static?synchronized?String?getDateW3CFormat()
?{
??Calendar?cal?=?Calendar.getInstance();
??return?getDateW3CFormat(?cal?);
?}
?/**
??@param?cal
??@return?String
??*/
?public?static?synchronized?String?getDateW3CFormat(?java.util.Calendar?cal?)
?{
??String?pattern?=?"yyyy-MM-dd?HH:mm:ss";
??return?getDateFormat(?cal,?pattern?);
?}
?/**
??@param?date
??@return?String
??*/
?public?static?synchronized?String?getDateW3CFormat(?java.util.Date?date?)
?{
??String?pattern?=?"yyyy-MM-dd?HH:mm:ss";
??return?getDateFormat(?date,?pattern?);
?}
?/**
??@param?strDate
??@return?java.util.Calendar
??*/
?public?static?synchronized?Calendar?parseCalendarW3CFormat(?String?strDate?)
?{
??String?pattern?=?"yyyy-MM-dd?HH:mm:ss";
??return?parseCalendarFormat(?strDate,?pattern?);
?}
?/**
??@param?strDate
??@return?java.util.Date
??*/
?public?static?synchronized?Date?parseDateW3CFormat(?String?strDate?)
?{
??String?pattern?=?"yyyy-MM-dd?HH:mm:ss";
??return?parseDateFormat(?strDate,?pattern?);
?}
?/**
??@param?cal
??@return?String
??*/
?public?static?synchronized?String?getDateFormat(?java.util.Calendar?cal?)
?{
??String?pattern?=?"yyyy-MM-dd?HH:mm:ss";
??return?getDateFormat(?cal,?pattern?);
?}
?/**
??@param?date
??@return?String
??*/
?public?static?synchronized?String?getDateFormat(?java.util.Date?date?)
?{
??String?pattern?=?"yyyy-MM-dd?HH:mm:ss";
??return?getDateFormat(?date,?pattern?);
?}
?/**
??@param?strDate
??@return?java.util.Calendar
??*/
?public?static?synchronized?Calendar?parseCalendarFormat(?String?strDate?)
?{
??String?pattern?=?"yyyy-MM-dd?HH:mm:ss";
??return?parseCalendarFormat(?strDate,?pattern?);
?}
?/**
??@param?strDate
??@return?java.util.Date
??*/
?public?static?synchronized?Date?parseDateFormat(?String?strDate?)
?{
??String?pattern?=?"yyyy-MM-dd?HH:mm:ss";
??return?parseDateFormat(?strDate,?pattern?);
?}
?/**
??@param?cal
??@param?pattern
??@return?String
??*/
?public?static?synchronized?String?getDateFormat(?java.util.Calendar?cal,?String?pattern?)
?{
??return?getDateFormat(?cal.getTime(),?pattern?);
?}
?/**
??@param?date
??@param?pattern
??@return?String
??*/
?public?static?synchronized?String?getDateFormat(?java.util.Date?date,?String?pattern?)
?{
??synchronized?(?sdf?)
??{
???String?str?=?null;
???sdf.applyPattern(?pattern?);
???str?=?sdf.format(?date?);
???return?str;
??}
?}
?/**
??@param?strDate
??@param?pattern
??@return?java.util.Calendar
??*/
?public?static?synchronized?Calendar?parseCalendarFormat(?String?strDate,?String?pattern?)
?{
??synchronized?(?sdf?)
??{
???Calendar?cal?=?null;
???sdf.applyPattern(?pattern?);
???try
???{
????sdf.parse(?strDate?);
????cal?=?sdf.getCalendar();
???}
???catch?(?Exception?e?)
???{
???}
???return?cal;
??}
?}
?/**
??@param?strDate
??@param?pattern
??@return?java.util.Date
??*/
?public?static?synchronized?Date?parseDateFormat(?String?strDate,?String?pattern?)
?{
??synchronized?(?sdf?)
??{
???Date?date?=?null;
???sdf.applyPattern(?pattern?);
???try
???{
????date?=?sdf.parse(?strDate?);
???}
???catch?(?Exception?e?)
???{
???}
???return?date;
??}
?}
?public?static?synchronized?int?getLastDayOfMonth(?int?month?)
?{
??if?(?month?<?1?||?month?>?12?)
??{
???return?-1;
??}
??int?retn?=?0;
??if?(?month?==?2?)
??{
???if?(?isLeapYear()?)
???{
????retn?=?29;
???}
???else
???{
????retn?=?dayArray[month?-?1];
???}
??}
??else
??{
???retn?=?dayArray[month?-?1];
??}
??return?retn;
?}
?public?static?synchronized?int?getLastDayOfMonth(?int?year,?int?month?)
?{
??if?(?month?<?1?||?month?>?12?)
??{
???return?-1;
??}
??int?retn?=?0;
??if?(?month?==?2?)
??{
???if?(?isLeapYear(?year?)?)
???{
????retn?=?29;
???}
???else
???{
????retn?=?dayArray[month?-?1];
???}
??}
??else
??{
???retn?=?dayArray[month?-?1];
??}
??return?retn;
?}
?public?static?synchronized?boolean?isLeapYear()
?{
??Calendar?cal?=?Calendar.getInstance();
??int?year?=?cal.get(?Calendar.YEAR?);
??return?isLeapYear(?year?);
?}
?public?static?synchronized?boolean?isLeapYear(?int?year?)
?{
??/**
???*?詳細設計:?1.被400整除是閏年,否則:?2.不能被4整除則不是閏年?3.能被4整除同時不能被100整除則是閏年
???*?3.能被4整除同時能被100整除則不是閏年
???*/
??if?(?(?year?%?400?)?==?0?)
???return?true;
??else?if?(?(?year?%?4?)?==?0?)
??{
???if?(?(?year?%?100?)?==?0?)
????return?false;
???else?return?true;
??}
??else?return?false;
?}
?
?/**
??*?判斷指定日期的年份是否是閏年
??*?
??*?@param?date
??*????????????指定日期。
??*?@return?是否閏年
??*/
?public?static?synchronized?boolean?isLeapYear(?java.util.Date?date?)
?{
??/**
???*?詳細設計:?1.被400整除是閏年,否則:?2.不能被4整除則不是閏年?3.能被4整除同時不能被100整除則是閏年
???*?3.能被4整除同時能被100整除則不是閏年
???*/
//??int?year?=?date.getYear();
??GregorianCalendar?gc?=?(?GregorianCalendar?)?Calendar.getInstance();
??gc.setTime(?date?);
??int?year?=?gc.get(?Calendar.YEAR?);
??return?isLeapYear(?year?);
?}?
?
?public?static?synchronized?boolean?isLeapYear(?java.util.Calendar?gc?)
?{
??/**
???*?詳細設計:?1.被400整除是閏年,否則:?2.不能被4整除則不是閏年?3.能被4整除同時不能被100整除則是閏年
???*?3.能被4整除同時能被100整除則不是閏年
???*/
??int?year?=?gc.get(?Calendar.YEAR?);
??return?isLeapYear(?year?);
?}?
?/**
??*?得到指定日期的前一個工作日
??*?
??*?@param?date
??*????????????指定日期。
??*?@return?指定日期的前一個工作日
??*/
?public?static?synchronized?java.util.Date?getPreviousWeekDay(
??java.util.Date?date?)
?{
??{
???/**
????*?詳細設計:?
????*?1.如果date是星期日,則減3天?
????*?2.如果date是星期六,則減2天?
????*?3.否則減1天
????*/
???GregorianCalendar?gc?=?(?GregorianCalendar?)?Calendar.getInstance();
???gc.setTime(?date?);
???return?getPreviousWeekDay(?gc?);
//???switch?(?gc.get(?Calendar.DAY_OF_WEEK?)?)
//???{
//????case?(?Calendar.MONDAY????):
//?????gc.add(?Calendar.DATE,?-3?);
//?????break;
//????case?(?Calendar.SUNDAY????):
//?????gc.add(?Calendar.DATE,?-2?);
//?????break;
//????default:
//?????gc.add(?Calendar.DATE,?-1?);
//?????break;
//???}
//???return?gc.getTime();
??}
?}
?
?public?static?synchronized?java.util.Date?getPreviousWeekDay(
??java.util.Calendar?gc?)
?{
??{
???/**
????*?詳細設計:?
????*?1.如果date是星期日,則減3天?
????*?2.如果date是星期六,則減2天?
????*?3.否則減1天
????*/
???switch?(?gc.get(?Calendar.DAY_OF_WEEK?)?)
???{
????case?(?Calendar.MONDAY????):
?????gc.add(?Calendar.DATE,?-3?);
?????break;
????case?(?Calendar.SUNDAY????):
?????gc.add(?Calendar.DATE,?-2?);
?????break;
????default:
?????gc.add(?Calendar.DATE,?-1?);
?????break;
???}
???return?gc.getTime();
??}
?}
?/**
??*?得到指定日期的后一個工作日
??*?
??*?@param?date
??*????????????指定日期。
??*?@return?指定日期的后一個工作日
??*/
?public?static?synchronized?java.util.Date?getNextWeekDay(
??java.util.Date?date?)
?{
??/**
???*?詳細設計:?
???*?1.如果date是星期五,則加3天?
???*?2.如果date是星期六,則加2天
???*?3.否則加1天
???*/
??GregorianCalendar?gc?=?(?GregorianCalendar?)?Calendar.getInstance();
??gc.setTime(?date?);
??switch?(?gc.get(?Calendar.DAY_OF_WEEK?)?)
??{
???case?(?Calendar.FRIDAY????):
????gc.add(?Calendar.DATE,?3?);
????break;
???case?(?Calendar.SATURDAY????):
????gc.add(?Calendar.DATE,?2?);
????break;
???default:
????gc.add(?Calendar.DATE,?1?);
????break;
??}
??return?gc.getTime();
?}
?
?public?static?synchronized?java.util.Calendar?getNextWeekDay(
??java.util.Calendar?gc?)
?{
??/**
???*?詳細設計:?
???*?1.如果date是星期五,則加3天?
???*?2.如果date是星期六,則加2天
???*?3.否則加1天
???*/
??switch?(?gc.get(?Calendar.DAY_OF_WEEK?)?)
??{
???case?(?Calendar.FRIDAY????):
????gc.add(?Calendar.DATE,?3?);
????break;
???case?(?Calendar.SATURDAY????):
????gc.add(?Calendar.DATE,?2?);
????break;
???default:
????gc.add(?Calendar.DATE,?1?);
????break;
??}
??return?gc;
?}
?/**
??*?取得指定日期的下一個月的最后一天
??*?
??*?@param?date
??*????????????指定日期。
??*?@return?指定日期的下一個月的最后一天
??*/
?public?static?synchronized?java.util.Date?getLastDayOfNextMonth(
??java.util.Date?date?)
?{
??/**
???*?詳細設計:?
???*?1.調用getNextMonth設置當前時間?
???*?2.以1為基礎,調用getLastDayOfMonth
???*/
??GregorianCalendar?gc?=?(?GregorianCalendar?)?Calendar.getInstance();
??gc.setTime(?date?);
??gc.setTime(?DateUtil.getNextMonth(?gc.getTime()?)?);
??gc.setTime(?DateUtil.getLastDayOfMonth(?gc.getTime()?)?);
??return?gc.getTime();
?}
?/**
??*?取得指定日期的下一個星期的最后一天
??*?
??*?@param?date
??*????????????指定日期。
??*?@return?指定日期的下一個星期的最后一天
??*/
?public?static?synchronized?java.util.Date?getLastDayOfNextWeek(
??java.util.Date?date?)
?{
??/**
???*?詳細設計:?
???*?1.調用getNextWeek設置當前時間?
???*?2.以1為基礎,調用getLastDayOfWeek
???*/
??GregorianCalendar?gc?=?(?GregorianCalendar?)?Calendar.getInstance();
??gc.setTime(?date?);
??gc.setTime(?DateUtil.getNextWeek(?gc.getTime()?)?);
??gc.setTime(?DateUtil.getLastDayOfWeek(?gc.getTime()?)?);
??return?gc.getTime();
?}
?/**
??*?取得指定日期的下一個月的第一天
??*?
??*?@param?date
??*????????????指定日期。
??*?@return?指定日期的下一個月的第一天
??*/
?public?static?synchronized?java.util.Date?getFirstDayOfNextMonth(
??java.util.Date?date?)
?{
??/**
???*?詳細設計:?
???*?1.調用getNextMonth設置當前時間?
???*?2.以1為基礎,調用getFirstDayOfMonth
???*/
??GregorianCalendar?gc?=?(?GregorianCalendar?)?Calendar.getInstance();
??gc.setTime(?date?);
??gc.setTime(?DateUtil.getNextMonth(?gc.getTime()?)?);
??gc.setTime(?DateUtil.getFirstDayOfMonth(?gc.getTime()?)?);
??return?gc.getTime();
?}
?
?public?static?synchronized?java.util.Calendar?getFirstDayOfNextMonth(
??java.util.Calendar?gc?)
?{
??/**
???*?詳細設計:?
???*?1.調用getNextMonth設置當前時間?
???*?2.以1為基礎,調用getFirstDayOfMonth
???*/
??gc.setTime(?DateUtil.getNextMonth(?gc.getTime()?)?);
??gc.setTime(?DateUtil.getFirstDayOfMonth(?gc.getTime()?)?);
??return?gc;
?}
?/**
??*?取得指定日期的下一個星期的第一天
??*?
??*?@param?date
??*????????????指定日期。
??*?@return?指定日期的下一個星期的第一天
??*/
?public?static?synchronized?java.util.Date?getFirstDayOfNextWeek(
??java.util.Date?date?)
?{
??/**
???*?詳細設計:?
???*?1.調用getNextWeek設置當前時間?
???*?2.以1為基礎,調用getFirstDayOfWeek
???*/
??GregorianCalendar?gc?=?(?GregorianCalendar?)?Calendar.getInstance();
??gc.setTime(?date?);
??gc.setTime(?DateUtil.getNextWeek(?gc.getTime()?)?);
??gc.setTime(?DateUtil.getFirstDayOfWeek(?gc.getTime()?)?);
??return?gc.getTime();
?}
?
?public?static?synchronized?java.util.Calendar?getFirstDayOfNextWeek(
??java.util.Calendar?gc?)
?{
??/**
???*?詳細設計:?
???*?1.調用getNextWeek設置當前時間?
???*?2.以1為基礎,調用getFirstDayOfWeek
???*/
??gc.setTime(?DateUtil.getNextWeek(?gc.getTime()?)?);
??gc.setTime(?DateUtil.getFirstDayOfWeek(?gc.getTime()?)?);
??return?gc;
?}
?/**
??*?取得指定日期的下一個月
??*?
??*?@param?date
??*????????????指定日期。
??*?@return?指定日期的下一個月
??*/
?public?static?synchronized?java.util.Date?getNextMonth(?java.util.Date?date?)
?{
??/**
???*?詳細設計:?
???*?1.指定日期的月份加1
???*/
??GregorianCalendar?gc?=?(?GregorianCalendar?)?Calendar.getInstance();
??gc.setTime(?date?);
??gc.add(?Calendar.MONTH,?1?);
??return?gc.getTime();
?}
?
?public?static?synchronized?java.util.Calendar?getNextMonth(?java.util.Calendar?gc?)
?{
??/**
???*?詳細設計:?
???*?1.指定日期的月份加1
???*/
??gc.add(?Calendar.MONTH,?1?);
??return?gc;
?}
?/**
??*?取得指定日期的下一天
??*?
??*?@param?date
??*????????????指定日期。
??*?@return?指定日期的下一天
??*/
?public?static?synchronized?java.util.Date?getNextDay(?java.util.Date?date?)
?{
??/**
???*?詳細設計:?1.指定日期加1天
???*/
??GregorianCalendar?gc?=?(?GregorianCalendar?)?Calendar.getInstance();
??gc.setTime(?date?);
??gc.add(?Calendar.DATE,?1?);
??return?gc.getTime();
?}
?
?public?static?synchronized?java.util.Calendar?getNextDay(?java.util.Calendar?gc?)
?{
??/**
???*?詳細設計:?1.指定日期加1天
???*/
??gc.add(?Calendar.DATE,?1?);
??return?gc;
?}
?/**
??*?取得指定日期的下一個星期
??*?
??*?@param?date
??*????????????指定日期。
??*?@return?指定日期的下一個星期
??*/
?public?static?synchronized?java.util.Date?getNextWeek(?java.util.Date?date?)
?{
??/**
???*?詳細設計:?
???*?1.指定日期加7天
???*/
??GregorianCalendar?gc?=?(?GregorianCalendar?)?Calendar.getInstance();
??gc.setTime(?date?);
??gc.add(?Calendar.DATE,?7?);
??return?gc.getTime();
?}
?
?public?static?synchronized?java.util.Calendar?getNextWeek(?java.util.Calendar?gc?)
?{
??/**
???*?詳細設計:?
???*?1.指定日期加7天
???*/
??gc.add(?Calendar.DATE,?7?);
??return?gc;
?}
?/**
??*?取得指定日期的所處星期的最后一天
??*?
??*?@param?date
??*????????????指定日期。
??*?@return?指定日期的所處星期的最后一天
??*/
?public?static?synchronized?java.util.Date?getLastDayOfWeek(
??java.util.Date?date?)
?{
??/**
???*?詳細設計:?
???*?1.如果date是星期日,則加6天?
???*?2.如果date是星期一,則加5天?
???*?3.如果date是星期二,則加4天
???*?4.如果date是星期三,則加3天?
???*?5.如果date是星期四,則加2天?
???*?6.如果date是星期五,則加1天
???*?7.如果date是星期六,則加0天
???*/
??GregorianCalendar?gc?=?(?GregorianCalendar?)?Calendar.getInstance();
??gc.setTime(?date?);
??switch?(?gc.get(?Calendar.DAY_OF_WEEK?)?)
??{
???case?(?Calendar.SUNDAY??):
????gc.add(?Calendar.DATE,?6?);
????break;
???case?(?Calendar.MONDAY??):
????gc.add(?Calendar.DATE,?5?);
????break;
???case?(?Calendar.TUESDAY??):
????gc.add(?Calendar.DATE,?4?);
????break;
???case?(?Calendar.WEDNESDAY??):
????gc.add(?Calendar.DATE,?3?);
????break;
???case?(?Calendar.THURSDAY??):
????gc.add(?Calendar.DATE,?2?);
????break;
???case?(?Calendar.FRIDAY??):
????gc.add(?Calendar.DATE,?1?);
????break;
???case?(?Calendar.SATURDAY??):
????gc.add(?Calendar.DATE,?0?);
????break;
??}
??return?gc.getTime();
?}
?/**
??*?取得指定日期的所處星期的第一天
??*?
??*?@param?date
??*????????????指定日期。
??*?@return?指定日期的所處星期的第一天
??*/
?public?static?synchronized?java.util.Date?getFirstDayOfWeek(
??java.util.Date?date?)
?{
??/**
???*?詳細設計:?
???*?1.如果date是星期日,則減0天?
???*?2.如果date是星期一,則減1天?
???*?3.如果date是星期二,則減2天
???*?4.如果date是星期三,則減3天?
???*?5.如果date是星期四,則減4天?
???*?6.如果date是星期五,則減5天
???*?7.如果date是星期六,則減6天
???*/
??GregorianCalendar?gc?=?(?GregorianCalendar?)?Calendar.getInstance();
??gc.setTime(?date?);
??switch?(?gc.get(?Calendar.DAY_OF_WEEK?)?)
??{
???case?(?Calendar.SUNDAY??):
????gc.add(?Calendar.DATE,?0?);
????break;
???case?(?Calendar.MONDAY??):
????gc.add(?Calendar.DATE,?-1?);
????break;
???case?(?Calendar.TUESDAY??):
????gc.add(?Calendar.DATE,?-2?);
????break;
???case?(?Calendar.WEDNESDAY??):
????gc.add(?Calendar.DATE,?-3?);
????break;
???case?(?Calendar.THURSDAY??):
????gc.add(?Calendar.DATE,?-4?);
????break;
???case?(?Calendar.FRIDAY??):
????gc.add(?Calendar.DATE,?-5?);
????break;
???case?(?Calendar.SATURDAY??):
????gc.add(?Calendar.DATE,?-6?);
????break;
??}
??return?gc.getTime();
?}
?
?public?static?synchronized?java.util.Calendar?getFirstDayOfWeek(
??java.util.Calendar?gc?)
?{
??/**
???*?詳細設計:?
???*?1.如果date是星期日,則減0天?
???*?2.如果date是星期一,則減1天?
???*?3.如果date是星期二,則減2天
???*?4.如果date是星期三,則減3天?
???*?5.如果date是星期四,則減4天?
???*?6.如果date是星期五,則減5天
???*?7.如果date是星期六,則減6天
???*/
??switch?(?gc.get(?Calendar.DAY_OF_WEEK?)?)
??{
???case?(?Calendar.SUNDAY??):
????gc.add(?Calendar.DATE,?0?);
????break;
???case?(?Calendar.MONDAY??):
????gc.add(?Calendar.DATE,?-1?);
????break;
???case?(?Calendar.TUESDAY??):
????gc.add(?Calendar.DATE,?-2?);
????break;
???case?(?Calendar.WEDNESDAY??):
????gc.add(?Calendar.DATE,?-3?);
????break;
???case?(?Calendar.THURSDAY??):
????gc.add(?Calendar.DATE,?-4?);
????break;
???case?(?Calendar.FRIDAY??):
????gc.add(?Calendar.DATE,?-5?);
????break;
???case?(?Calendar.SATURDAY??):
????gc.add(?Calendar.DATE,?-6?);
????break;
??}
??return?gc;
?}
?/**
??*?取得指定日期的所處月份的最后一天
??*?
??*?@param?date
??*????????????指定日期。
??*?@return?指定日期的所處月份的最后一天
??*/
?public?static?synchronized?java.util.Date?getLastDayOfMonth(
??java.util.Date?date?)
?{
??/**
???*?詳細設計:?
???*?1.如果date在1月,則為31日?
???*?2.如果date在2月,則為28日?
???*?3.如果date在3月,則為31日
???*?4.如果date在4月,則為30日?
???*?5.如果date在5月,則為31日?
???*?6.如果date在6月,則為30日
???*?7.如果date在7月,則為31日?
???*?8.如果date在8月,則為31日?
???*?9.如果date在9月,則為30日
???*?10.如果date在10月,則為31日?
???*?11.如果date在11月,則為30日?
???*?12.如果date在12月,則為31日
???*?1.如果date在閏年的2月,則為29日
???*/
??GregorianCalendar?gc?=?(?GregorianCalendar?)?Calendar.getInstance();
??gc.setTime(?date?);
??switch?(?gc.get(?Calendar.MONTH?)?)
??{
???case?0:
????gc.set(?Calendar.DAY_OF_MONTH,?31?);
????break;
???case?1:
????gc.set(?Calendar.DAY_OF_MONTH,?28?);
????break;
???case?2:
????gc.set(?Calendar.DAY_OF_MONTH,?31?);
????break;
???case?3:
????gc.set(?Calendar.DAY_OF_MONTH,?30?);
????break;
???case?4:
????gc.set(?Calendar.DAY_OF_MONTH,?31?);
????break;
???case?5:
????gc.set(?Calendar.DAY_OF_MONTH,?30?);
????break;
???case?6:
????gc.set(?Calendar.DAY_OF_MONTH,?31?);
????break;
???case?7:
????gc.set(?Calendar.DAY_OF_MONTH,?31?);
????break;
???case?8:
????gc.set(?Calendar.DAY_OF_MONTH,?30?);
????break;
???case?9:
????gc.set(?Calendar.DAY_OF_MONTH,?31?);
????break;
???case?10:
????gc.set(?Calendar.DAY_OF_MONTH,?30?);
????break;
???case?11:
????gc.set(?Calendar.DAY_OF_MONTH,?31?);
????break;
??}
??//檢查閏年
??if?(?(?gc.get(?Calendar.MONTH?)?==?Calendar.FEBRUARY?)
???&&?(?isLeapYear(?gc.get(?Calendar.YEAR?)?)?)?)
??{
???gc.set(?Calendar.DAY_OF_MONTH,?29?);
??}
??return?gc.getTime();
?}
?
?public?static?synchronized?java.util.Calendar?getLastDayOfMonth(
??java.util.Calendar?gc?)
?{
??/**
???*?詳細設計:?
???*?1.如果date在1月,則為31日?
???*?2.如果date在2月,則為28日?
???*?3.如果date在3月,則為31日
???*?4.如果date在4月,則為30日?
???*?5.如果date在5月,則為31日?
???*?6.如果date在6月,則為30日
???*?7.如果date在7月,則為31日?
???*?8.如果date在8月,則為31日?
???*?9.如果date在9月,則為30日
???*?10.如果date在10月,則為31日?
???*?11.如果date在11月,則為30日?
???*?12.如果date在12月,則為31日
???*?1.如果date在閏年的2月,則為29日
???*/
??switch?(?gc.get(?Calendar.MONTH?)?)
??{
???case?0:
????gc.set(?Calendar.DAY_OF_MONTH,?31?);
????break;
???case?1:
????gc.set(?Calendar.DAY_OF_MONTH,?28?);
????break;
???case?2:
????gc.set(?Calendar.DAY_OF_MONTH,?31?);
????break;
???case?3:
????gc.set(?Calendar.DAY_OF_MONTH,?30?);
????break;
???case?4:
????gc.set(?Calendar.DAY_OF_MONTH,?31?);
????break;
???case?5:
????gc.set(?Calendar.DAY_OF_MONTH,?30?);
????break;
???case?6:
????gc.set(?Calendar.DAY_OF_MONTH,?31?);
????break;
???case?7:
????gc.set(?Calendar.DAY_OF_MONTH,?31?);
????break;
???case?8:
????gc.set(?Calendar.DAY_OF_MONTH,?30?);
????break;
???case?9:
????gc.set(?Calendar.DAY_OF_MONTH,?31?);
????break;
???case?10:
????gc.set(?Calendar.DAY_OF_MONTH,?30?);
????break;
???case?11:
????gc.set(?Calendar.DAY_OF_MONTH,?31?);
????break;
??}
??//檢查閏年
??if?(?(?gc.get(?Calendar.MONTH?)?==?Calendar.FEBRUARY?)
???&&?(?isLeapYear(?gc.get(?Calendar.YEAR?)?)?)?)
??{
???gc.set(?Calendar.DAY_OF_MONTH,?29?);
??}
??return?gc;
?}
?/**
??*?取得指定日期的所處月份的第一天
??*?
??*?@param?date
??*????????????指定日期。
??*?@return?指定日期的所處月份的第一天
??*/
?public?static?synchronized?java.util.Date?getFirstDayOfMonth(?java.util.Date?date?)
?{
??/**
???*?詳細設計:?1.設置為1號
???*/
??GregorianCalendar?gc?=?(?GregorianCalendar?)?Calendar.getInstance();
??gc.setTime(?date?);
??gc.set(?Calendar.DAY_OF_MONTH,?1?);
??return?gc.getTime();
?}
?
?public?static?synchronized?java.util.Calendar?getFirstDayOfMonth(?java.util.Calendar?gc?)
?{
??/**
???*?詳細設計:?1.設置為1號
???*/
??gc.set(?Calendar.DAY_OF_MONTH,?1?);
??return?gc;
?}
?/**
??*?將日期對象轉換成為指定ORA日期、時間格式的字符串形式。如果日期對象為空,返回?一個空字符串對象,而不是一個空對象。
??*?
??*?@param?theDate
??*????????????將要轉換為字符串的日期對象。
??*?@param?hasTime
??*????????????如果返回的字符串帶時間則為true
??*?@return?轉換的結果
??*/
?public?static?synchronized?String?toOraString(?Date?theDate,?boolean?hasTime?)
?{
??/**
???*?詳細設計:?
???*?1.如果有時間,則設置格式為getOraDateTimeFormat()的返回值
???*?2.否則設置格式為getOraDateFormat()的返回值?
???*?3.調用toString(Date?theDate,?DateFormat
???*?theDateFormat)
???*/
??DateFormat?theFormat;
??if?(?hasTime?)
??{
???theFormat?=?getOraDateTimeFormat();
??}
??else
??{
???theFormat?=?getOraDateFormat();
??}
??return?toString(?theDate,?theFormat?);
?}
?/**
??*?將日期對象轉換成為指定日期、時間格式的字符串形式。如果日期對象為空,返回?一個空字符串對象,而不是一個空對象。
??*?
??*?@param?theDate
??*????????????將要轉換為字符串的日期對象。
??*?@param?hasTime
??*????????????如果返回的字符串帶時間則為true
??*?@return?轉換的結果
??*/
?public?static?synchronized?String?toString(?Date?theDate,?boolean?hasTime?)
?{
??/**
???*?詳細設計:?
???*?1.如果有時間,則設置格式為getDateTimeFormat的返回值?
???*?2.否則設置格式為getDateFormat的返回值
???*?3.調用toString(Date?theDate,?DateFormat?theDateFormat)
???*/
??DateFormat?theFormat;
??if?(?hasTime?)
??{
???theFormat?=?getDateTimeFormat();
??}
??else
??{
???theFormat?=?getDateFormat();
??}
??return?toString(?theDate,?theFormat?);
?}
?/**
??*?標準日期格式
??*/
?private?static?final?SimpleDateFormat?DATE_FORMAT?=?new?SimpleDateFormat(
??"MM/dd/yyyy"?);
?/**
??*?標準時間格式
??*/
?private?static?final?SimpleDateFormat?DATE_TIME_FORMAT?=?new?SimpleDateFormat(
??"MM/dd/yyyy?HH:mm"?);
?/**
??*?帶時分秒的標準時間格式
??*/
?private?static?final?SimpleDateFormat?DATE_TIME_EXTENDED_FORMAT?=?new?SimpleDateFormat(
??"MM/dd/yyyy?HH:mm:ss"?);
?/**
??*?ORA標準日期格式
??*/
?private?static?final?SimpleDateFormat?ORA_DATE_FORMAT?=?new?SimpleDateFormat(
??"yyyyMMdd"?);
?/**
??*?ORA標準時間格式
??*/
?private?static?final?SimpleDateFormat?ORA_DATE_TIME_FORMAT?=?new?SimpleDateFormat(
??"yyyyMMddHHmm"?);
?/**
??*?帶時分秒的ORA標準時間格式
??*/
?private?static?final?SimpleDateFormat?ORA_DATE_TIME_EXTENDED_FORMAT?=?new?SimpleDateFormat(
??"yyyyMMddHHmmss"?);
?/**
??*?創建一個標準日期格式的克隆
??*?
??*?@return?標準日期格式的克隆
??*/
?public?static?synchronized?DateFormat?getDateFormat()
?{
??/**
???*?詳細設計:?1.返回DATE_FORMAT
???*/
??SimpleDateFormat?theDateFormat?=?(?SimpleDateFormat?)?
???DATE_FORMAT.clone();
??theDateFormat.setLenient(?false?);
??return?theDateFormat;
?}
?/**
??*?創建一個標準時間格式的克隆
??*?
??*?@return?標準時間格式的克隆
??*/
?public?static?synchronized?DateFormat?getDateTimeFormat()
?{
??/**
???*?詳細設計:?1.返回DATE_TIME_FORMAT
???*/
??SimpleDateFormat?theDateTimeFormat?=?(?SimpleDateFormat?)?DATE_TIME_FORMAT
???.clone();
??theDateTimeFormat.setLenient(?false?);
??return?theDateTimeFormat;
?}
?/**
??*?創建一個標準ORA日期格式的克隆
??*?
??*?@return?標準ORA日期格式的克隆
??*/
?public?static?synchronized?DateFormat?getOraDateFormat()
?{
??/**
???*?詳細設計:?1.返回ORA_DATE_FORMAT
???*/
??SimpleDateFormat?theDateFormat?=?(?SimpleDateFormat?)?ORA_DATE_FORMAT
???.clone();
??theDateFormat.setLenient(?false?);
??return?theDateFormat;
?}
?/**
??*?創建一個標準ORA時間格式的克隆
??*?
??*?@return?標準ORA時間格式的克隆
??*/
?public?static?synchronized?DateFormat?getOraDateTimeFormat()
?{
??/**
???*?詳細設計:?1.返回ORA_DATE_TIME_FORMAT
???*/
??SimpleDateFormat?theDateTimeFormat?=?(?SimpleDateFormat?)?
???ORA_DATE_TIME_FORMAT.clone();
??theDateTimeFormat.setLenient(?false?);
??return?theDateTimeFormat;
?}
?/**
??*?將一個日期對象轉換成為指定日期、時間格式的字符串。?如果日期對象為空,返回一個空字符串,而不是一個空對象。
??*?
??*?@param?theDate
??*????????????要轉換的日期對象
??*?@param?theDateFormat
??*????????????返回的日期字符串的格式
??*?@return?轉換結果
??*/
?public?static?synchronized?String?toString(?Date?theDate,
??DateFormat?theDateFormat?)
?{
??/**
???*?詳細設計:?
???*?1.theDate為空,則返回""?
???*?2.否則使用theDateFormat格式化
???*/
??if?(?theDate?==?null?)?
???return?"";
??return?theDateFormat.format(?theDate?);
?}
}
?
import?java.text.*;
import?java.util.*;
public?class?DateUtil
{
?private?static?final?int[]?dayArray?=?new?int[]
??{?31,?28,?31,?30,?31,?30,?31,?31,?30,?31,?30,?31?};
?private?static?SimpleDateFormat?sdf?=?new?SimpleDateFormat();
?public?static?synchronized?Calendar?getCalendar()
?{
??return?GregorianCalendar.getInstance();
?}
?/**
??@return?String
??*/
?public?static?synchronized?String?getDateMilliFormat()
?{
??Calendar?cal?=?Calendar.getInstance();
??return?getDateMilliFormat(?cal?);
?}
?/**
??@param?cal
??@return?String
??*/
?public?static?synchronized?String?getDateMilliFormat(?java.util.Calendar?cal?)
?{
??String?pattern?=?"yyyy-MM-dd?HH:mm:ss,SSS";
??return?getDateFormat(?cal,?pattern?);
?}
?/**
??@param?date
??@return?String
??*/
?public?static?synchronized?String?getDateMilliFormat(?java.util.Date?date?)
?{
??String?pattern?=?"yyyy-MM-dd?HH:mm:ss,SSS";
??return?getDateFormat(?date,?pattern?);
?}
?/**
??@param?strDate
??@return?java.util.Calendar
??*/
?public?static?synchronized?Calendar?parseCalendarMilliFormat(?String?strDate?)
?{
??String?pattern?=?"yyyy-MM-dd?HH:mm:ss,SSS";
??return?parseCalendarFormat(?strDate,?pattern?);
?}
?/**
??@param?strDate
??@return?java.util.Date
??*/
?public?static?synchronized?Date?parseDateMilliFormat(?String?strDate?)
?{
??String?pattern?=?"yyyy-MM-dd?HH:mm:ss,SSS";
??return?parseDateFormat(?strDate,?pattern?);
?}
?/**
??@return?String
??*/
?public?static?synchronized?String?getDateSecondFormat()
?{
??Calendar?cal?=?Calendar.getInstance();
??return?getDateSecondFormat(?cal?);
?}
?/**
??@param?cal
??@return?String
??*/
?public?static?synchronized?String?getDateSecondFormat(?java.util.Calendar?cal?)
?{
??String?pattern?=?"yyyy-MM-dd?HH:mm:ss";
??return?getDateFormat(?cal,?pattern?);
?}
?/**
??@param?date
??@return?String
??*/
?public?static?synchronized?String?getDateSecondFormat(?java.util.Date?date?)
?{
??String?pattern?=?"yyyy-MM-dd?HH:mm:ss";
??return?getDateFormat(?date,?pattern?);
?}
?/**
??@param?strDate
??@return?java.util.Calendar
??*/
?public?static?synchronized?Calendar?parseCalendarSecondFormat(?String?strDate?)
?{
??String?pattern?=?"yyyy-MM-dd?HH:mm:ss";
??return?parseCalendarFormat(?strDate,?pattern?);
?}
?/**
??@param?strDate
??@return?java.util.Date
??*/
?public?static?synchronized?Date?parseDateSecondFormat(?String?strDate?)
?{
??String?pattern?=?"yyyy-MM-dd?HH:mm:ss";
??return?parseDateFormat(?strDate,?pattern?);
?}
?/**
??@return?String
??*/
?public?static?synchronized?String?getDateMinuteFormat()
?{
??Calendar?cal?=?Calendar.getInstance();
??return?getDateMinuteFormat(?cal?);
?}
?/**
??@param?cal
??@return?String
??*/
?public?static?synchronized?String?getDateMinuteFormat(?java.util.Calendar?cal?)
?{
??String?pattern?=?"yyyy-MM-dd?HH:mm";
??return?getDateFormat(?cal,?pattern?);
?}
?/**
??@param?date
??@return?String
??*/
?public?static?synchronized?String?getDateMinuteFormat(?java.util.Date?date?)
?{
??String?pattern?=?"yyyy-MM-dd?HH:mm";
??return?getDateFormat(?date,?pattern?);
?}
?/**
??@param?strDate
??@return?java.util.Calendar
??*/
?public?static?synchronized?Calendar?parseCalendarMinuteFormat(?String?strDate?)
?{
??String?pattern?=?"yyyy-MM-dd?HH:mm";
??return?parseCalendarFormat(?strDate,?pattern?);
?}
?/**
??@param?strDate
??@return?java.util.Date
??*/
?public?static?synchronized?Date?parseDateMinuteFormat(?String?strDate?)
?{
??String?pattern?=?"yyyy-MM-dd?HH:mm";
??return?parseDateFormat(?strDate,?pattern?);
?}
?/**
??@return?String
??*/
?public?static?synchronized?String?getDateDayFormat()
?{
??Calendar?cal?=?Calendar.getInstance();
??return?getDateDayFormat(?cal?);
?}
?/**
??@param?cal
??@return?String
??*/
?public?static?synchronized?String?getDateDayFormat(?java.util.Calendar?cal?)
?{
??String?pattern?=?"yyyy-MM-dd";
??return?getDateFormat(?cal,?pattern?);
?}
?/**
??@param?date
??@return?String
??*/
?public?static?synchronized?String?getDateDayFormat(?java.util.Date?date?)
?{
??String?pattern?=?"yyyy-MM-dd";
??return?getDateFormat(?date,?pattern?);
?}
?/**
??@param?strDate
??@return?java.util.Calendar
??*/
?public?static?synchronized?Calendar?parseCalendarDayFormat(?String?strDate?)
?{
??String?pattern?=?"yyyy-MM-dd";
??return?parseCalendarFormat(?strDate,?pattern?);
?}
?/**
??@param?strDate
??@return?java.util.Date
??*/
?public?static?synchronized?Date?parseDateDayFormat(?String?strDate?)
?{
??String?pattern?=?"yyyy-MM-dd";
??return?parseDateFormat(?strDate,?pattern?);
?}
?/**
??@return?String
??*/
?public?static?synchronized?String?getDateFileFormat()
?{
??Calendar?cal?=?Calendar.getInstance();
??return?getDateFileFormat(?cal?);
?}
?/**
??@param?cal
??@return?String
??*/
?public?static?synchronized?String?getDateFileFormat(?java.util.Calendar?cal?)
?{
??String?pattern?=?"yyyy-MM-dd_HH-mm-ss";
??return?getDateFormat(?cal,?pattern?);
?}
?/**
??@param?date
??@return?String
??*/
?public?static?synchronized?String?getDateFileFormat(?java.util.Date?date?)
?{
??String?pattern?=?"yyyy-MM-dd_HH-mm-ss";
??return?getDateFormat(?date,?pattern?);
?}
?/**
??@param?strDate
??@return?java.util.Calendar
??*/
?public?static?synchronized?Calendar?parseCalendarFileFormat(?String?strDate?)
?{
??String?pattern?=?"yyyy-MM-dd_HH-mm-ss";
??return?parseCalendarFormat(?strDate,?pattern?);
?}
?/**
??@param?strDate
??@return?java.util.Date
??*/
?public?static?synchronized?Date?parseDateFileFormat(?String?strDate?)
?{
??String?pattern?=?"yyyy-MM-dd_HH-mm-ss";
??return?parseDateFormat(?strDate,?pattern?);
?}
?/**
??@return?String
??*/
?public?static?synchronized?String?getDateW3CFormat()
?{
??Calendar?cal?=?Calendar.getInstance();
??return?getDateW3CFormat(?cal?);
?}
?/**
??@param?cal
??@return?String
??*/
?public?static?synchronized?String?getDateW3CFormat(?java.util.Calendar?cal?)
?{
??String?pattern?=?"yyyy-MM-dd?HH:mm:ss";
??return?getDateFormat(?cal,?pattern?);
?}
?/**
??@param?date
??@return?String
??*/
?public?static?synchronized?String?getDateW3CFormat(?java.util.Date?date?)
?{
??String?pattern?=?"yyyy-MM-dd?HH:mm:ss";
??return?getDateFormat(?date,?pattern?);
?}
?/**
??@param?strDate
??@return?java.util.Calendar
??*/
?public?static?synchronized?Calendar?parseCalendarW3CFormat(?String?strDate?)
?{
??String?pattern?=?"yyyy-MM-dd?HH:mm:ss";
??return?parseCalendarFormat(?strDate,?pattern?);
?}
?/**
??@param?strDate
??@return?java.util.Date
??*/
?public?static?synchronized?Date?parseDateW3CFormat(?String?strDate?)
?{
??String?pattern?=?"yyyy-MM-dd?HH:mm:ss";
??return?parseDateFormat(?strDate,?pattern?);
?}
?/**
??@param?cal
??@return?String
??*/
?public?static?synchronized?String?getDateFormat(?java.util.Calendar?cal?)
?{
??String?pattern?=?"yyyy-MM-dd?HH:mm:ss";
??return?getDateFormat(?cal,?pattern?);
?}
?/**
??@param?date
??@return?String
??*/
?public?static?synchronized?String?getDateFormat(?java.util.Date?date?)
?{
??String?pattern?=?"yyyy-MM-dd?HH:mm:ss";
??return?getDateFormat(?date,?pattern?);
?}
?/**
??@param?strDate
??@return?java.util.Calendar
??*/
?public?static?synchronized?Calendar?parseCalendarFormat(?String?strDate?)
?{
??String?pattern?=?"yyyy-MM-dd?HH:mm:ss";
??return?parseCalendarFormat(?strDate,?pattern?);
?}
?/**
??@param?strDate
??@return?java.util.Date
??*/
?public?static?synchronized?Date?parseDateFormat(?String?strDate?)
?{
??String?pattern?=?"yyyy-MM-dd?HH:mm:ss";
??return?parseDateFormat(?strDate,?pattern?);
?}
?/**
??@param?cal
??@param?pattern
??@return?String
??*/
?public?static?synchronized?String?getDateFormat(?java.util.Calendar?cal,?String?pattern?)
?{
??return?getDateFormat(?cal.getTime(),?pattern?);
?}
?/**
??@param?date
??@param?pattern
??@return?String
??*/
?public?static?synchronized?String?getDateFormat(?java.util.Date?date,?String?pattern?)
?{
??synchronized?(?sdf?)
??{
???String?str?=?null;
???sdf.applyPattern(?pattern?);
???str?=?sdf.format(?date?);
???return?str;
??}
?}
?/**
??@param?strDate
??@param?pattern
??@return?java.util.Calendar
??*/
?public?static?synchronized?Calendar?parseCalendarFormat(?String?strDate,?String?pattern?)
?{
??synchronized?(?sdf?)
??{
???Calendar?cal?=?null;
???sdf.applyPattern(?pattern?);
???try
???{
????sdf.parse(?strDate?);
????cal?=?sdf.getCalendar();
???}
???catch?(?Exception?e?)
???{
???}
???return?cal;
??}
?}
?/**
??@param?strDate
??@param?pattern
??@return?java.util.Date
??*/
?public?static?synchronized?Date?parseDateFormat(?String?strDate,?String?pattern?)
?{
??synchronized?(?sdf?)
??{
???Date?date?=?null;
???sdf.applyPattern(?pattern?);
???try
???{
????date?=?sdf.parse(?strDate?);
???}
???catch?(?Exception?e?)
???{
???}
???return?date;
??}
?}
?public?static?synchronized?int?getLastDayOfMonth(?int?month?)
?{
??if?(?month?<?1?||?month?>?12?)
??{
???return?-1;
??}
??int?retn?=?0;
??if?(?month?==?2?)
??{
???if?(?isLeapYear()?)
???{
????retn?=?29;
???}
???else
???{
????retn?=?dayArray[month?-?1];
???}
??}
??else
??{
???retn?=?dayArray[month?-?1];
??}
??return?retn;
?}
?public?static?synchronized?int?getLastDayOfMonth(?int?year,?int?month?)
?{
??if?(?month?<?1?||?month?>?12?)
??{
???return?-1;
??}
??int?retn?=?0;
??if?(?month?==?2?)
??{
???if?(?isLeapYear(?year?)?)
???{
????retn?=?29;
???}
???else
???{
????retn?=?dayArray[month?-?1];
???}
??}
??else
??{
???retn?=?dayArray[month?-?1];
??}
??return?retn;
?}
?public?static?synchronized?boolean?isLeapYear()
?{
??Calendar?cal?=?Calendar.getInstance();
??int?year?=?cal.get(?Calendar.YEAR?);
??return?isLeapYear(?year?);
?}
?public?static?synchronized?boolean?isLeapYear(?int?year?)
?{
??/**
???*?詳細設計:?1.被400整除是閏年,否則:?2.不能被4整除則不是閏年?3.能被4整除同時不能被100整除則是閏年
???*?3.能被4整除同時能被100整除則不是閏年
???*/
??if?(?(?year?%?400?)?==?0?)
???return?true;
??else?if?(?(?year?%?4?)?==?0?)
??{
???if?(?(?year?%?100?)?==?0?)
????return?false;
???else?return?true;
??}
??else?return?false;
?}
?
?/**
??*?判斷指定日期的年份是否是閏年
??*?
??*?@param?date
??*????????????指定日期。
??*?@return?是否閏年
??*/
?public?static?synchronized?boolean?isLeapYear(?java.util.Date?date?)
?{
??/**
???*?詳細設計:?1.被400整除是閏年,否則:?2.不能被4整除則不是閏年?3.能被4整除同時不能被100整除則是閏年
???*?3.能被4整除同時能被100整除則不是閏年
???*/
//??int?year?=?date.getYear();
??GregorianCalendar?gc?=?(?GregorianCalendar?)?Calendar.getInstance();
??gc.setTime(?date?);
??int?year?=?gc.get(?Calendar.YEAR?);
??return?isLeapYear(?year?);
?}?
?
?public?static?synchronized?boolean?isLeapYear(?java.util.Calendar?gc?)
?{
??/**
???*?詳細設計:?1.被400整除是閏年,否則:?2.不能被4整除則不是閏年?3.能被4整除同時不能被100整除則是閏年
???*?3.能被4整除同時能被100整除則不是閏年
???*/
??int?year?=?gc.get(?Calendar.YEAR?);
??return?isLeapYear(?year?);
?}?
?/**
??*?得到指定日期的前一個工作日
??*?
??*?@param?date
??*????????????指定日期。
??*?@return?指定日期的前一個工作日
??*/
?public?static?synchronized?java.util.Date?getPreviousWeekDay(
??java.util.Date?date?)
?{
??{
???/**
????*?詳細設計:?
????*?1.如果date是星期日,則減3天?
????*?2.如果date是星期六,則減2天?
????*?3.否則減1天
????*/
???GregorianCalendar?gc?=?(?GregorianCalendar?)?Calendar.getInstance();
???gc.setTime(?date?);
???return?getPreviousWeekDay(?gc?);
//???switch?(?gc.get(?Calendar.DAY_OF_WEEK?)?)
//???{
//????case?(?Calendar.MONDAY????):
//?????gc.add(?Calendar.DATE,?-3?);
//?????break;
//????case?(?Calendar.SUNDAY????):
//?????gc.add(?Calendar.DATE,?-2?);
//?????break;
//????default:
//?????gc.add(?Calendar.DATE,?-1?);
//?????break;
//???}
//???return?gc.getTime();
??}
?}
?
?public?static?synchronized?java.util.Date?getPreviousWeekDay(
??java.util.Calendar?gc?)
?{
??{
???/**
????*?詳細設計:?
????*?1.如果date是星期日,則減3天?
????*?2.如果date是星期六,則減2天?
????*?3.否則減1天
????*/
???switch?(?gc.get(?Calendar.DAY_OF_WEEK?)?)
???{
????case?(?Calendar.MONDAY????):
?????gc.add(?Calendar.DATE,?-3?);
?????break;
????case?(?Calendar.SUNDAY????):
?????gc.add(?Calendar.DATE,?-2?);
?????break;
????default:
?????gc.add(?Calendar.DATE,?-1?);
?????break;
???}
???return?gc.getTime();
??}
?}
?/**
??*?得到指定日期的后一個工作日
??*?
??*?@param?date
??*????????????指定日期。
??*?@return?指定日期的后一個工作日
??*/
?public?static?synchronized?java.util.Date?getNextWeekDay(
??java.util.Date?date?)
?{
??/**
???*?詳細設計:?
???*?1.如果date是星期五,則加3天?
???*?2.如果date是星期六,則加2天
???*?3.否則加1天
???*/
??GregorianCalendar?gc?=?(?GregorianCalendar?)?Calendar.getInstance();
??gc.setTime(?date?);
??switch?(?gc.get(?Calendar.DAY_OF_WEEK?)?)
??{
???case?(?Calendar.FRIDAY????):
????gc.add(?Calendar.DATE,?3?);
????break;
???case?(?Calendar.SATURDAY????):
????gc.add(?Calendar.DATE,?2?);
????break;
???default:
????gc.add(?Calendar.DATE,?1?);
????break;
??}
??return?gc.getTime();
?}
?
?public?static?synchronized?java.util.Calendar?getNextWeekDay(
??java.util.Calendar?gc?)
?{
??/**
???*?詳細設計:?
???*?1.如果date是星期五,則加3天?
???*?2.如果date是星期六,則加2天
???*?3.否則加1天
???*/
??switch?(?gc.get(?Calendar.DAY_OF_WEEK?)?)
??{
???case?(?Calendar.FRIDAY????):
????gc.add(?Calendar.DATE,?3?);
????break;
???case?(?Calendar.SATURDAY????):
????gc.add(?Calendar.DATE,?2?);
????break;
???default:
????gc.add(?Calendar.DATE,?1?);
????break;
??}
??return?gc;
?}
?/**
??*?取得指定日期的下一個月的最后一天
??*?
??*?@param?date
??*????????????指定日期。
??*?@return?指定日期的下一個月的最后一天
??*/
?public?static?synchronized?java.util.Date?getLastDayOfNextMonth(
??java.util.Date?date?)
?{
??/**
???*?詳細設計:?
???*?1.調用getNextMonth設置當前時間?
???*?2.以1為基礎,調用getLastDayOfMonth
???*/
??GregorianCalendar?gc?=?(?GregorianCalendar?)?Calendar.getInstance();
??gc.setTime(?date?);
??gc.setTime(?DateUtil.getNextMonth(?gc.getTime()?)?);
??gc.setTime(?DateUtil.getLastDayOfMonth(?gc.getTime()?)?);
??return?gc.getTime();
?}
?/**
??*?取得指定日期的下一個星期的最后一天
??*?
??*?@param?date
??*????????????指定日期。
??*?@return?指定日期的下一個星期的最后一天
??*/
?public?static?synchronized?java.util.Date?getLastDayOfNextWeek(
??java.util.Date?date?)
?{
??/**
???*?詳細設計:?
???*?1.調用getNextWeek設置當前時間?
???*?2.以1為基礎,調用getLastDayOfWeek
???*/
??GregorianCalendar?gc?=?(?GregorianCalendar?)?Calendar.getInstance();
??gc.setTime(?date?);
??gc.setTime(?DateUtil.getNextWeek(?gc.getTime()?)?);
??gc.setTime(?DateUtil.getLastDayOfWeek(?gc.getTime()?)?);
??return?gc.getTime();
?}
?/**
??*?取得指定日期的下一個月的第一天
??*?
??*?@param?date
??*????????????指定日期。
??*?@return?指定日期的下一個月的第一天
??*/
?public?static?synchronized?java.util.Date?getFirstDayOfNextMonth(
??java.util.Date?date?)
?{
??/**
???*?詳細設計:?
???*?1.調用getNextMonth設置當前時間?
???*?2.以1為基礎,調用getFirstDayOfMonth
???*/
??GregorianCalendar?gc?=?(?GregorianCalendar?)?Calendar.getInstance();
??gc.setTime(?date?);
??gc.setTime(?DateUtil.getNextMonth(?gc.getTime()?)?);
??gc.setTime(?DateUtil.getFirstDayOfMonth(?gc.getTime()?)?);
??return?gc.getTime();
?}
?
?public?static?synchronized?java.util.Calendar?getFirstDayOfNextMonth(
??java.util.Calendar?gc?)
?{
??/**
???*?詳細設計:?
???*?1.調用getNextMonth設置當前時間?
???*?2.以1為基礎,調用getFirstDayOfMonth
???*/
??gc.setTime(?DateUtil.getNextMonth(?gc.getTime()?)?);
??gc.setTime(?DateUtil.getFirstDayOfMonth(?gc.getTime()?)?);
??return?gc;
?}
?/**
??*?取得指定日期的下一個星期的第一天
??*?
??*?@param?date
??*????????????指定日期。
??*?@return?指定日期的下一個星期的第一天
??*/
?public?static?synchronized?java.util.Date?getFirstDayOfNextWeek(
??java.util.Date?date?)
?{
??/**
???*?詳細設計:?
???*?1.調用getNextWeek設置當前時間?
???*?2.以1為基礎,調用getFirstDayOfWeek
???*/
??GregorianCalendar?gc?=?(?GregorianCalendar?)?Calendar.getInstance();
??gc.setTime(?date?);
??gc.setTime(?DateUtil.getNextWeek(?gc.getTime()?)?);
??gc.setTime(?DateUtil.getFirstDayOfWeek(?gc.getTime()?)?);
??return?gc.getTime();
?}
?
?public?static?synchronized?java.util.Calendar?getFirstDayOfNextWeek(
??java.util.Calendar?gc?)
?{
??/**
???*?詳細設計:?
???*?1.調用getNextWeek設置當前時間?
???*?2.以1為基礎,調用getFirstDayOfWeek
???*/
??gc.setTime(?DateUtil.getNextWeek(?gc.getTime()?)?);
??gc.setTime(?DateUtil.getFirstDayOfWeek(?gc.getTime()?)?);
??return?gc;
?}
?/**
??*?取得指定日期的下一個月
??*?
??*?@param?date
??*????????????指定日期。
??*?@return?指定日期的下一個月
??*/
?public?static?synchronized?java.util.Date?getNextMonth(?java.util.Date?date?)
?{
??/**
???*?詳細設計:?
???*?1.指定日期的月份加1
???*/
??GregorianCalendar?gc?=?(?GregorianCalendar?)?Calendar.getInstance();
??gc.setTime(?date?);
??gc.add(?Calendar.MONTH,?1?);
??return?gc.getTime();
?}
?
?public?static?synchronized?java.util.Calendar?getNextMonth(?java.util.Calendar?gc?)
?{
??/**
???*?詳細設計:?
???*?1.指定日期的月份加1
???*/
??gc.add(?Calendar.MONTH,?1?);
??return?gc;
?}
?/**
??*?取得指定日期的下一天
??*?
??*?@param?date
??*????????????指定日期。
??*?@return?指定日期的下一天
??*/
?public?static?synchronized?java.util.Date?getNextDay(?java.util.Date?date?)
?{
??/**
???*?詳細設計:?1.指定日期加1天
???*/
??GregorianCalendar?gc?=?(?GregorianCalendar?)?Calendar.getInstance();
??gc.setTime(?date?);
??gc.add(?Calendar.DATE,?1?);
??return?gc.getTime();
?}
?
?public?static?synchronized?java.util.Calendar?getNextDay(?java.util.Calendar?gc?)
?{
??/**
???*?詳細設計:?1.指定日期加1天
???*/
??gc.add(?Calendar.DATE,?1?);
??return?gc;
?}
?/**
??*?取得指定日期的下一個星期
??*?
??*?@param?date
??*????????????指定日期。
??*?@return?指定日期的下一個星期
??*/
?public?static?synchronized?java.util.Date?getNextWeek(?java.util.Date?date?)
?{
??/**
???*?詳細設計:?
???*?1.指定日期加7天
???*/
??GregorianCalendar?gc?=?(?GregorianCalendar?)?Calendar.getInstance();
??gc.setTime(?date?);
??gc.add(?Calendar.DATE,?7?);
??return?gc.getTime();
?}
?
?public?static?synchronized?java.util.Calendar?getNextWeek(?java.util.Calendar?gc?)
?{
??/**
???*?詳細設計:?
???*?1.指定日期加7天
???*/
??gc.add(?Calendar.DATE,?7?);
??return?gc;
?}
?/**
??*?取得指定日期的所處星期的最后一天
??*?
??*?@param?date
??*????????????指定日期。
??*?@return?指定日期的所處星期的最后一天
??*/
?public?static?synchronized?java.util.Date?getLastDayOfWeek(
??java.util.Date?date?)
?{
??/**
???*?詳細設計:?
???*?1.如果date是星期日,則加6天?
???*?2.如果date是星期一,則加5天?
???*?3.如果date是星期二,則加4天
???*?4.如果date是星期三,則加3天?
???*?5.如果date是星期四,則加2天?
???*?6.如果date是星期五,則加1天
???*?7.如果date是星期六,則加0天
???*/
??GregorianCalendar?gc?=?(?GregorianCalendar?)?Calendar.getInstance();
??gc.setTime(?date?);
??switch?(?gc.get(?Calendar.DAY_OF_WEEK?)?)
??{
???case?(?Calendar.SUNDAY??):
????gc.add(?Calendar.DATE,?6?);
????break;
???case?(?Calendar.MONDAY??):
????gc.add(?Calendar.DATE,?5?);
????break;
???case?(?Calendar.TUESDAY??):
????gc.add(?Calendar.DATE,?4?);
????break;
???case?(?Calendar.WEDNESDAY??):
????gc.add(?Calendar.DATE,?3?);
????break;
???case?(?Calendar.THURSDAY??):
????gc.add(?Calendar.DATE,?2?);
????break;
???case?(?Calendar.FRIDAY??):
????gc.add(?Calendar.DATE,?1?);
????break;
???case?(?Calendar.SATURDAY??):
????gc.add(?Calendar.DATE,?0?);
????break;
??}
??return?gc.getTime();
?}
?/**
??*?取得指定日期的所處星期的第一天
??*?
??*?@param?date
??*????????????指定日期。
??*?@return?指定日期的所處星期的第一天
??*/
?public?static?synchronized?java.util.Date?getFirstDayOfWeek(
??java.util.Date?date?)
?{
??/**
???*?詳細設計:?
???*?1.如果date是星期日,則減0天?
???*?2.如果date是星期一,則減1天?
???*?3.如果date是星期二,則減2天
???*?4.如果date是星期三,則減3天?
???*?5.如果date是星期四,則減4天?
???*?6.如果date是星期五,則減5天
???*?7.如果date是星期六,則減6天
???*/
??GregorianCalendar?gc?=?(?GregorianCalendar?)?Calendar.getInstance();
??gc.setTime(?date?);
??switch?(?gc.get(?Calendar.DAY_OF_WEEK?)?)
??{
???case?(?Calendar.SUNDAY??):
????gc.add(?Calendar.DATE,?0?);
????break;
???case?(?Calendar.MONDAY??):
????gc.add(?Calendar.DATE,?-1?);
????break;
???case?(?Calendar.TUESDAY??):
????gc.add(?Calendar.DATE,?-2?);
????break;
???case?(?Calendar.WEDNESDAY??):
????gc.add(?Calendar.DATE,?-3?);
????break;
???case?(?Calendar.THURSDAY??):
????gc.add(?Calendar.DATE,?-4?);
????break;
???case?(?Calendar.FRIDAY??):
????gc.add(?Calendar.DATE,?-5?);
????break;
???case?(?Calendar.SATURDAY??):
????gc.add(?Calendar.DATE,?-6?);
????break;
??}
??return?gc.getTime();
?}
?
?public?static?synchronized?java.util.Calendar?getFirstDayOfWeek(
??java.util.Calendar?gc?)
?{
??/**
???*?詳細設計:?
???*?1.如果date是星期日,則減0天?
???*?2.如果date是星期一,則減1天?
???*?3.如果date是星期二,則減2天
???*?4.如果date是星期三,則減3天?
???*?5.如果date是星期四,則減4天?
???*?6.如果date是星期五,則減5天
???*?7.如果date是星期六,則減6天
???*/
??switch?(?gc.get(?Calendar.DAY_OF_WEEK?)?)
??{
???case?(?Calendar.SUNDAY??):
????gc.add(?Calendar.DATE,?0?);
????break;
???case?(?Calendar.MONDAY??):
????gc.add(?Calendar.DATE,?-1?);
????break;
???case?(?Calendar.TUESDAY??):
????gc.add(?Calendar.DATE,?-2?);
????break;
???case?(?Calendar.WEDNESDAY??):
????gc.add(?Calendar.DATE,?-3?);
????break;
???case?(?Calendar.THURSDAY??):
????gc.add(?Calendar.DATE,?-4?);
????break;
???case?(?Calendar.FRIDAY??):
????gc.add(?Calendar.DATE,?-5?);
????break;
???case?(?Calendar.SATURDAY??):
????gc.add(?Calendar.DATE,?-6?);
????break;
??}
??return?gc;
?}
?/**
??*?取得指定日期的所處月份的最后一天
??*?
??*?@param?date
??*????????????指定日期。
??*?@return?指定日期的所處月份的最后一天
??*/
?public?static?synchronized?java.util.Date?getLastDayOfMonth(
??java.util.Date?date?)
?{
??/**
???*?詳細設計:?
???*?1.如果date在1月,則為31日?
???*?2.如果date在2月,則為28日?
???*?3.如果date在3月,則為31日
???*?4.如果date在4月,則為30日?
???*?5.如果date在5月,則為31日?
???*?6.如果date在6月,則為30日
???*?7.如果date在7月,則為31日?
???*?8.如果date在8月,則為31日?
???*?9.如果date在9月,則為30日
???*?10.如果date在10月,則為31日?
???*?11.如果date在11月,則為30日?
???*?12.如果date在12月,則為31日
???*?1.如果date在閏年的2月,則為29日
???*/
??GregorianCalendar?gc?=?(?GregorianCalendar?)?Calendar.getInstance();
??gc.setTime(?date?);
??switch?(?gc.get(?Calendar.MONTH?)?)
??{
???case?0:
????gc.set(?Calendar.DAY_OF_MONTH,?31?);
????break;
???case?1:
????gc.set(?Calendar.DAY_OF_MONTH,?28?);
????break;
???case?2:
????gc.set(?Calendar.DAY_OF_MONTH,?31?);
????break;
???case?3:
????gc.set(?Calendar.DAY_OF_MONTH,?30?);
????break;
???case?4:
????gc.set(?Calendar.DAY_OF_MONTH,?31?);
????break;
???case?5:
????gc.set(?Calendar.DAY_OF_MONTH,?30?);
????break;
???case?6:
????gc.set(?Calendar.DAY_OF_MONTH,?31?);
????break;
???case?7:
????gc.set(?Calendar.DAY_OF_MONTH,?31?);
????break;
???case?8:
????gc.set(?Calendar.DAY_OF_MONTH,?30?);
????break;
???case?9:
????gc.set(?Calendar.DAY_OF_MONTH,?31?);
????break;
???case?10:
????gc.set(?Calendar.DAY_OF_MONTH,?30?);
????break;
???case?11:
????gc.set(?Calendar.DAY_OF_MONTH,?31?);
????break;
??}
??//檢查閏年
??if?(?(?gc.get(?Calendar.MONTH?)?==?Calendar.FEBRUARY?)
???&&?(?isLeapYear(?gc.get(?Calendar.YEAR?)?)?)?)
??{
???gc.set(?Calendar.DAY_OF_MONTH,?29?);
??}
??return?gc.getTime();
?}
?
?public?static?synchronized?java.util.Calendar?getLastDayOfMonth(
??java.util.Calendar?gc?)
?{
??/**
???*?詳細設計:?
???*?1.如果date在1月,則為31日?
???*?2.如果date在2月,則為28日?
???*?3.如果date在3月,則為31日
???*?4.如果date在4月,則為30日?
???*?5.如果date在5月,則為31日?
???*?6.如果date在6月,則為30日
???*?7.如果date在7月,則為31日?
???*?8.如果date在8月,則為31日?
???*?9.如果date在9月,則為30日
???*?10.如果date在10月,則為31日?
???*?11.如果date在11月,則為30日?
???*?12.如果date在12月,則為31日
???*?1.如果date在閏年的2月,則為29日
???*/
??switch?(?gc.get(?Calendar.MONTH?)?)
??{
???case?0:
????gc.set(?Calendar.DAY_OF_MONTH,?31?);
????break;
???case?1:
????gc.set(?Calendar.DAY_OF_MONTH,?28?);
????break;
???case?2:
????gc.set(?Calendar.DAY_OF_MONTH,?31?);
????break;
???case?3:
????gc.set(?Calendar.DAY_OF_MONTH,?30?);
????break;
???case?4:
????gc.set(?Calendar.DAY_OF_MONTH,?31?);
????break;
???case?5:
????gc.set(?Calendar.DAY_OF_MONTH,?30?);
????break;
???case?6:
????gc.set(?Calendar.DAY_OF_MONTH,?31?);
????break;
???case?7:
????gc.set(?Calendar.DAY_OF_MONTH,?31?);
????break;
???case?8:
????gc.set(?Calendar.DAY_OF_MONTH,?30?);
????break;
???case?9:
????gc.set(?Calendar.DAY_OF_MONTH,?31?);
????break;
???case?10:
????gc.set(?Calendar.DAY_OF_MONTH,?30?);
????break;
???case?11:
????gc.set(?Calendar.DAY_OF_MONTH,?31?);
????break;
??}
??//檢查閏年
??if?(?(?gc.get(?Calendar.MONTH?)?==?Calendar.FEBRUARY?)
???&&?(?isLeapYear(?gc.get(?Calendar.YEAR?)?)?)?)
??{
???gc.set(?Calendar.DAY_OF_MONTH,?29?);
??}
??return?gc;
?}
?/**
??*?取得指定日期的所處月份的第一天
??*?
??*?@param?date
??*????????????指定日期。
??*?@return?指定日期的所處月份的第一天
??*/
?public?static?synchronized?java.util.Date?getFirstDayOfMonth(?java.util.Date?date?)
?{
??/**
???*?詳細設計:?1.設置為1號
???*/
??GregorianCalendar?gc?=?(?GregorianCalendar?)?Calendar.getInstance();
??gc.setTime(?date?);
??gc.set(?Calendar.DAY_OF_MONTH,?1?);
??return?gc.getTime();
?}
?
?public?static?synchronized?java.util.Calendar?getFirstDayOfMonth(?java.util.Calendar?gc?)
?{
??/**
???*?詳細設計:?1.設置為1號
???*/
??gc.set(?Calendar.DAY_OF_MONTH,?1?);
??return?gc;
?}
?/**
??*?將日期對象轉換成為指定ORA日期、時間格式的字符串形式。如果日期對象為空,返回?一個空字符串對象,而不是一個空對象。
??*?
??*?@param?theDate
??*????????????將要轉換為字符串的日期對象。
??*?@param?hasTime
??*????????????如果返回的字符串帶時間則為true
??*?@return?轉換的結果
??*/
?public?static?synchronized?String?toOraString(?Date?theDate,?boolean?hasTime?)
?{
??/**
???*?詳細設計:?
???*?1.如果有時間,則設置格式為getOraDateTimeFormat()的返回值
???*?2.否則設置格式為getOraDateFormat()的返回值?
???*?3.調用toString(Date?theDate,?DateFormat
???*?theDateFormat)
???*/
??DateFormat?theFormat;
??if?(?hasTime?)
??{
???theFormat?=?getOraDateTimeFormat();
??}
??else
??{
???theFormat?=?getOraDateFormat();
??}
??return?toString(?theDate,?theFormat?);
?}
?/**
??*?將日期對象轉換成為指定日期、時間格式的字符串形式。如果日期對象為空,返回?一個空字符串對象,而不是一個空對象。
??*?
??*?@param?theDate
??*????????????將要轉換為字符串的日期對象。
??*?@param?hasTime
??*????????????如果返回的字符串帶時間則為true
??*?@return?轉換的結果
??*/
?public?static?synchronized?String?toString(?Date?theDate,?boolean?hasTime?)
?{
??/**
???*?詳細設計:?
???*?1.如果有時間,則設置格式為getDateTimeFormat的返回值?
???*?2.否則設置格式為getDateFormat的返回值
???*?3.調用toString(Date?theDate,?DateFormat?theDateFormat)
???*/
??DateFormat?theFormat;
??if?(?hasTime?)
??{
???theFormat?=?getDateTimeFormat();
??}
??else
??{
???theFormat?=?getDateFormat();
??}
??return?toString(?theDate,?theFormat?);
?}
?/**
??*?標準日期格式
??*/
?private?static?final?SimpleDateFormat?DATE_FORMAT?=?new?SimpleDateFormat(
??"MM/dd/yyyy"?);
?/**
??*?標準時間格式
??*/
?private?static?final?SimpleDateFormat?DATE_TIME_FORMAT?=?new?SimpleDateFormat(
??"MM/dd/yyyy?HH:mm"?);
?/**
??*?帶時分秒的標準時間格式
??*/
?private?static?final?SimpleDateFormat?DATE_TIME_EXTENDED_FORMAT?=?new?SimpleDateFormat(
??"MM/dd/yyyy?HH:mm:ss"?);
?/**
??*?ORA標準日期格式
??*/
?private?static?final?SimpleDateFormat?ORA_DATE_FORMAT?=?new?SimpleDateFormat(
??"yyyyMMdd"?);
?/**
??*?ORA標準時間格式
??*/
?private?static?final?SimpleDateFormat?ORA_DATE_TIME_FORMAT?=?new?SimpleDateFormat(
??"yyyyMMddHHmm"?);
?/**
??*?帶時分秒的ORA標準時間格式
??*/
?private?static?final?SimpleDateFormat?ORA_DATE_TIME_EXTENDED_FORMAT?=?new?SimpleDateFormat(
??"yyyyMMddHHmmss"?);
?/**
??*?創建一個標準日期格式的克隆
??*?
??*?@return?標準日期格式的克隆
??*/
?public?static?synchronized?DateFormat?getDateFormat()
?{
??/**
???*?詳細設計:?1.返回DATE_FORMAT
???*/
??SimpleDateFormat?theDateFormat?=?(?SimpleDateFormat?)?
???DATE_FORMAT.clone();
??theDateFormat.setLenient(?false?);
??return?theDateFormat;
?}
?/**
??*?創建一個標準時間格式的克隆
??*?
??*?@return?標準時間格式的克隆
??*/
?public?static?synchronized?DateFormat?getDateTimeFormat()
?{
??/**
???*?詳細設計:?1.返回DATE_TIME_FORMAT
???*/
??SimpleDateFormat?theDateTimeFormat?=?(?SimpleDateFormat?)?DATE_TIME_FORMAT
???.clone();
??theDateTimeFormat.setLenient(?false?);
??return?theDateTimeFormat;
?}
?/**
??*?創建一個標準ORA日期格式的克隆
??*?
??*?@return?標準ORA日期格式的克隆
??*/
?public?static?synchronized?DateFormat?getOraDateFormat()
?{
??/**
???*?詳細設計:?1.返回ORA_DATE_FORMAT
???*/
??SimpleDateFormat?theDateFormat?=?(?SimpleDateFormat?)?ORA_DATE_FORMAT
???.clone();
??theDateFormat.setLenient(?false?);
??return?theDateFormat;
?}
?/**
??*?創建一個標準ORA時間格式的克隆
??*?
??*?@return?標準ORA時間格式的克隆
??*/
?public?static?synchronized?DateFormat?getOraDateTimeFormat()
?{
??/**
???*?詳細設計:?1.返回ORA_DATE_TIME_FORMAT
???*/
??SimpleDateFormat?theDateTimeFormat?=?(?SimpleDateFormat?)?
???ORA_DATE_TIME_FORMAT.clone();
??theDateTimeFormat.setLenient(?false?);
??return?theDateTimeFormat;
?}
?/**
??*?將一個日期對象轉換成為指定日期、時間格式的字符串。?如果日期對象為空,返回一個空字符串,而不是一個空對象。
??*?
??*?@param?theDate
??*????????????要轉換的日期對象
??*?@param?theDateFormat
??*????????????返回的日期字符串的格式
??*?@return?轉換結果
??*/
?public?static?synchronized?String?toString(?Date?theDate,
??DateFormat?theDateFormat?)
?{
??/**
???*?詳細設計:?
???*?1.theDate為空,則返回""?
???*?2.否則使用theDateFormat格式化
???*/
??if?(?theDate?==?null?)?
???return?"";
??return?theDateFormat.format(?theDate?);
?}
}