您的位置:首页 > 其它

通用日期处理函数,日期处理大全

2006-06-27 20:54 627 查看
http://www.graphics.net.cn/document/java/011/129.asp

/*

* <p>Company: 凌科软件 www.elinksoft.com </p>

* @author liubaojun

* @version 1.0

* Created on 2004-11-29

* 来源于 elinkBSP (业务架构平台) 部分源代码

*/

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 );

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: