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