/**
* 有关日期工具类(extends TimeUtil)
*
* TimeUtil主要功能有:
* 1.各种日期类型(字符,util.Date,sql.Date,Calendar等)转换
* 2.获取指定日期的年份,月份,日份,小时,分,秒,毫秒
* 3.获取当前/系统日期(指定日期格式)
* 4.获取字符日期一个月的天数
* 5.获取指定月份的第一天,最后一天
*
* DateUtil主要功能有:
* 1.日期比较
* 2.获取2个字符日期的天数差,周数差,月数差,年数差
* 3.日期添加
* 4.判断给定日期是不是润年
*/package com.aimtime.financing.service.util;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.text.*;public abstract class TimeUtil {
//---当前日期的年,月,日,时,分,秒
public static Calendar now = Calendar.getInstance();
int year = now.get( Calendar.YEAR );
int date = now.get( Calendar.DAY_OF_MONTH );
int month = now.get( Calendar.MONTH ) + 1;
int hour = now.get( Calendar.HOUR );
int min = now.get( Calendar.MINUTE );
int sec = now.get( Calendar.SECOND );
//-------------------------------日期类型转换---------------------------------------------------------------------------
/**
* 字符型日期转化util.Date型日期
* @Param:p_strDate 字符型日期
* @param p_format 格式:"yyyy-MM-dd" / "yyyy-MM-dd hh:mm:ss"
* @Return:java.util.Date util.Date型日期
* @Throws: ParseException
* @Author: zhuqx
* @Date: 2006-10-31
*/
public static java.util.Date toUtilDateFromStrDateByFormat( String p_strDate, String p_format )
throws ParseException {
java.util.Date l_date = null;
java.text.DateFormat df = new java.text.SimpleDateFormat( p_format );
if ( p_strDate != null && ( !"".equals( p_strDate ) ) && p_format != null && ( !"".equals( p_format ) ) ) {
l_date = df.parse( p_strDate );
}
return l_date;
}
/**
* 字符型日期转化成sql.Date型日期
* @param p_strDate 字符型日期
* @return java.sql.Date sql.Date型日期
* @throws ParseException
* @Author: zhuqx
* @Date: 2006-10-31
*/
public static java.sql.Date toSqlDateFromStrDate( String p_strDate ) throws ParseException {
java.sql.Date returnDate = null;
java.text.DateFormat sdf = new java.text.SimpleDateFormat();
if ( p_strDate != null && ( !"".equals( p_strDate ) ) ) {
returnDate = new java.sql.Date( sdf.parse( p_strDate ).getTime() );
}
return returnDate;
}
/**
* util.Date型日期转化指定格式的字符串型日期
* @param p_date Date
* @param p_format String
* 格式1:"yyyy-MM-dd"
* 格式2:"yyyy-MM-dd hh:mm:ss EE"
* 格式3:"yyyy年MM月dd日 hh:mm:ss EE"
* 说明: 年-月-日 时:分:秒 星期 注意MM/mm大小写
* @return String
* @Author: zhuqx
* @Date: 2006-10-31
*/
public static String toStrDateFromUtilDateByFormat( java.util.Date p_utilDate, String p_format ) throws ParseException {
String l_result = "";
if ( p_utilDate != null ) {
SimpleDateFormat sdf = new SimpleDateFormat( p_format );
l_result = sdf.format( p_utilDate );
}
return l_result;
}
/**
* util.Date型日期转化转化成Calendar日期
* @param p_utilDate Date
* @return Calendar
* @Author: zhuqx
* @Date: 2006-10-31
*/
public static Calendar toCalendarFromUtilDate(java.util.Date p_utilDate) {
Calendar c = Calendar.getInstance();
c.setTime(p_utilDate);
return c;
}
/**
* util.Date型日期转化sql.Date(年月日)型日期
* @Param: p_utilDate util.Date型日期
* @Return: java.sql.Date sql.Date型日期
* @Author: zhuqx
* @Date: 2006-10-31
*/
public static java.sql.Date toSqlDateFromUtilDate( java.util.Date p_utilDate ) {
java.sql.Date returnDate = null;
if ( p_utilDate != null ) {
returnDate = new java.sql.Date( p_utilDate.getTime() );
}
return returnDate;
}
/**
* util.Date型日期转化sql.Time(时分秒)型日期
* @Param: p_utilDate util.Date型日期
* @Return: java.sql.Time sql.Time型日期
* @Author: zhuqx
* @Date: 2006-10-31
*/
public static java.sql.Time toSqlTimeFromUtilDate( java.util.Date p_utilDate ) {
java.sql.Time returnDate = null;
if ( p_utilDate != null ) {
returnDate = new java.sql.Time( p_utilDate.getTime() );
}
return returnDate;
}
/**
* util.Date型日期转化sql.Date(时分秒)型日期
* @Param: p_utilDate util.Date型日期
* @Return: java.sql.Timestamp sql.Timestamp型日期
* @Author: zhuqx
* @Date: 2006-10-31
*/
public static java.sql.Timestamp toSqlTimestampFromUtilDate( java.util.Date p_utilDate ) {
java.sql.Timestamp returnDate = null;
if ( p_utilDate != null ) {
returnDate = new java.sql.Timestamp( p_utilDate.getTime() );
}
return returnDate;
}
/**
* sql.Date型日期转化util.Date型日期
* @Param: sqlDate sql.Date型日期
* @Return: java.util.Date util.Date型日期
* @Author: zhuqx
* @Date: 2006-10-31
*/
public static java.util.Date toUtilDateFromSqlDate( java.sql.Date p_sqlDate ) {
java.util.Date returnDate = null;
if ( p_sqlDate != null ) {
returnDate = new java.util.Date( p_sqlDate.getTime() );
}
return returnDate;
}
//-----------------获取指定日期的年份,月份,日份,小时,分,秒,毫秒----------------------------
/**
* 获取指定日期的年份
* @param p_date util.Date日期
* @return int 年份
* @author zhuqx
* @Date: 2006-10-31
*/
public static int getYearOfDate( java.util.Date p_date ) {
java.util.Calendar c = java.util.Calendar.getInstance();
c.setTime( p_date );
return c.get( java.util.Calendar.YEAR );
}
/**
* 获取指定日期的月份
* @param p_date util.Date日期
* @return int 月份
* @author zhuqx
* @Date: 2006-10-31
*/
public static int getMonthOfDate( java.util.Date p_date ) {
java.util.Calendar c = java.util.Calendar.getInstance();
c.setTime( p_date );
return c.get( java.util.Calendar.MONTH ) + 1;
}
/**
* 获取指定日期的日份
* @param p_date util.Date日期
* @return int 日份
* @author zhuqx
* @Date: 2006-10-31
*/
public static int getDayOfDate( java.util.Date p_date ) {
java.util.Calendar c = java.util.Calendar.getInstance();
c.setTime( p_date );
return c.get( java.util.Calendar.DAY_OF_MONTH );
}
/**
* 获取指定日期的小时
* @param p_date util.Date日期
* @return int 日份
* @author zhuqx
* @Date: 2006-10-31
*/
public static int getHourOfDate( java.util.Date p_date ) {
java.util.Calendar c = java.util.Calendar.getInstance();
c.setTime( p_date );
return c.get( java.util.Calendar.HOUR_OF_DAY );
}
/**
* 获取指定日期的分钟
* @param p_date util.Date日期
* @return int 分钟
* @author zhuqx
* @Date: 2006-10-31
*/
public static int getMinuteOfDate( java.util.Date p_date ) {
java.util.Calendar c = java.util.Calendar.getInstance();
c.setTime( p_date );
return c.get( java.util.Calendar.MINUTE );
}
/**
* 获取指定日期的秒钟
* @param p_date util.Date日期
* @return int 秒钟
* @author zhuqx
* @Date: 2006-10-31
*/
public static int getSecondOfDate( java.util.Date p_date ) {
java.util.Calendar c = java.util.Calendar.getInstance();
c.setTime( p_date );
return c.get( java.util.Calendar.SECOND );
}
/**
* 获取指定日期的毫秒
* @param p_date util.Date日期
* @return long 毫秒
* @author zhuqx
* @Date: 2006-10-31
*/
public static long getMillisOfDate( java.util.Date p_date ) {
java.util.Calendar c = java.util.Calendar.getInstance();
c.setTime( p_date );
return c.getTimeInMillis();
}
//-----------------获取当前/系统日期(指定日期格式)-----------------------------------------------------------------------------------
/**
* 获取指定日期格式当前日期的字符型日期
* @param p_format 日期格式
* 格式1:"yyyy-MM-dd"
* 格式2:"yyyy-MM-dd hh:mm:ss EE"
* 格式3:"yyyy年MM月dd日 hh:mm:ss EE"
* 说明: 年-月-日 时:分:秒 星期 注意MM/mm大小写
* @return String 当前时间字符串
* @author zhuqx
* @Date: 2006-10-31
*/
public static String getNowOfDateByFormat( String p_format ) {
Date d = new Date();
SimpleDateFormat sdf = new SimpleDateFormat( p_format );
String dateStr = sdf.format( d );
return dateStr;
}
/**
* 获取指定日期格式系统日期的字符型日期
* @param p_format 日期格式
* 格式1:"yyyy-MM-dd"
* 格式2:"yyyy-MM-dd hh:mm:ss EE"
* 格式3:"yyyy年MM月dd日 hh:mm:ss EE"
* 说明: 年-月-日 时:分:秒 星期 注意MM/mm大小写
* @return String 系统时间字符串
* @author zhuqx
* @Date: 2006-10-31
*/
public static String getSystemOfDateByFormat( String p_format ) {
long time = System.currentTimeMillis();
Date d2 = new Date();
Date d = new Date( time );
SimpleDateFormat sdf = new SimpleDateFormat( p_format );
String dateStr = sdf.format( d );
return dateStr;
}
/**
* 获取字符日期一个月的天数
* @param p_date
* @return 天数
* @author zhuqx
*/
public static long getDayOfMonth( Date p_date ) throws ParseException {
int year = getYearOfDate(p_date);
int month = getMonthOfDate( p_date )-1;
int day = getDayOfDate( p_date );
int hour = getHourOfDate( p_date );
int minute = getMinuteOfDate( p_date );
int second = getSecondOfDate( p_date );
Calendar l_calendar = new GregorianCalendar(year,month,day,hour,minute,second);
return l_calendar.getActualMaximum( l_calendar.DAY_OF_MONTH );
}
// -----------------获取指定月份的第一天,最后一天 ---------------------------------------------------------------------------
/**
* 获取指定月份的第一天
* @param p_strDate 指定月份
* @param p_formate 日期格式
* @return String 时间字符串
* @author zhuqx
* @Date: 2006-10-31
*/
public static String getDateOfMonthBegin( String p_strDate, String p_format ) throws ParseException {
java.util.Date date = toUtilDateFromStrDateByFormat( p_strDate,p_format );
return toStrDateFromUtilDateByFormat( date,"yyyy-MM" ) + "-01";
}
/**
* 获取指定月份的最后一天
* @param p_strDate 指定月份
* @param p_formate 日期格式
* @return String 时间字符串
* @author zhuqx
* @Date: 2006-10-31
*/
public static String getDateOfMonthEnd( String p_strDate, String p_format ) throws ParseException {
java.util.Date date = toUtilDateFromStrDateByFormat( getDateOfMonthBegin( p_strDate,p_format ),p_format );
Calendar calendar = Calendar.getInstance();
calendar.setTime( date );
calendar.add( Calendar.MONTH,1 );
calendar.add( Calendar.DAY_OF_YEAR,-1 );
return toStrDateFromUtilDateByFormat( calendar.getTime(),p_format );
}
}package com.aimtime.financing.service.util;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;import org.apache.log4j.Logger;/**
* @Functionality: 有关日期工具类
*/
public class DateUtil extends TimeUtil {
/**
* Logger for this class
*/
private static final Logger logger = Logger.getLogger( DateUtil.class );
/** 日期转化 */
private static final SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd" );
/**
* @Functionality: 构造函数
*/
public DateUtil() {}
//----------------------日期计算---------------------------------------------------------------------------------
/**
* 是否开始日期在结束日期之前(不包括相等)
* @param p_startDate
* @param p_endDate
* @return boolean 在结束日期前:ture;否则:false
* @author zhuqx
* @Date: 2006-10-31
*/
public static boolean isStartDateBeforeEndDate( Date p_startDate, Date p_endDate ) throws ParseException {
long l_startTime = getMillisOfDate( p_startDate );
long l_endTime = getMillisOfDate( p_endDate );
return ( l_startTime - l_endTime > (long) 0 ) ? true : false;
}
/**
* 获取2个字符日期的天数差
* @param p_startDate
* @param p_endDate
* @return 天数差
* @author zhuqx
* @Date: 2006-10-31
*/
public static long getDaysOfTowDiffDate( String p_startDate, String p_endDate ) throws ParseException {
Date l_startDate = toUtilDateFromStrDateByFormat( p_startDate,"yyyy-MM-dd");
Date l_endDate = toUtilDateFromStrDateByFormat( p_endDate, "yyyy-MM-dd");
long l_startTime = getMillisOfDate( l_startDate );
long l_endTime = getMillisOfDate( l_endDate );
long betweenDays = (long) ( ( l_endTime - l_startTime ) / ( 1000 * 60 * 60 * 24 ) );
return betweenDays;
}
/**
* 获取2个字符日期的周数差
* @param p_startDate
* @param p_endDate
* @return 周数差
* @author zhuqx
* @Date: 2006-10-31
*/
public static long getWeeksOfTowDiffDate( String p_startDate, String p_endDate ) throws ParseException {
return getDaysOfTowDiffDate(p_startDate,p_endDate)/7;
}
/**
* 获取2个字符日期的月数差
* @param p_startDate
* @param p_endDate
* @return 月数差
* @author zhuqx
* @Date: 2006-10-31
*/
public static long getMonthsOfTowDiffDate( String p_startDate, String p_endDate ) throws ParseException {
return getDaysOfTowDiffDate(p_startDate,p_endDate)/30;
}
/**
* 获取2个字符日期的年数差
* @param p_startDate
* @param p_endDate
* @return 年数差
* @author zhuqx
* @Date: 2006-10-31
*/
public static long getYearsOfTowDiffDate( String p_startDate, String p_endDate ) throws ParseException {
return getDaysOfTowDiffDate(p_startDate,p_endDate)/365;
}
/**
* 在给定的日期基础上添加年,月,日、时,分,秒
* 例如要再2006-10-21(uitl日期)添加3个月,并且格式化为yyyy-MM-dd格式,
* 这里调用的方式为 addDate(2006-10-21,3,Calendar.MONTH,"yyyy-MM-dd")
* @param p_startDate 给定的日期
* @param p_count 时间的数量
* @param p_field 添加的域
* @param p_format 时间转化格式,例如:yyyy-MM-dd hh:mm:ss 或者yyyy-mm-dd等
* @return 添加后格式化的时间
* @Date: 2006-10-31
*/
public static String addDate(Date p_startDate,int p_count,int p_field,String p_format)throws ParseException {
//年,月,日、时,分,秒
int l_year = getYearOfDate(p_startDate);
int l_month = getMonthOfDate( p_startDate )-1;
int l_day = getDayOfDate( p_startDate );
int l_hour = getHourOfDate( p_startDate );
int l_minute = getMinuteOfDate( p_startDate );
int l_second = getSecondOfDate( p_startDate );
Calendar l_calendar = new GregorianCalendar(l_year,l_month,l_day,l_hour,l_minute,l_second);
l_calendar.add(p_field,p_count);
return toStrDateFromUtilDateByFormat(l_calendar.getTime(),p_format);
}
/**
* 判断给定日期是不是润年
* @param p_date 给定日期
* @return boolean 如果给定的年份为闰年,则返回 true;否则返回 false。
* @Date: 2006-10-31
*/
public static boolean isLeapYear(Date p_date) {
int l_year = getYearOfDate( p_date );
GregorianCalendar l_calendar = new GregorianCalendar();
return l_calendar.isLeapYear( l_year );
}
}package com.aimtime.financing.service.util;import java.text.ParseException;
import java.util.Calendar;
import java.util.Date;import junit.framework.TestCase;import org.apache.log4j.Logger;public class DateUtilTest extends TestCase {
/**
* Logger for this class
*/
private static final Logger logger = Logger.getLogger( DateUtilTest.class );
DateUtil dateUtil;
protected void setUp() throws Exception {
logger.debug( "setUp() - start" );
super.setUp();
dateUtil = new DateUtil();
logger.debug( "setUp() - end" );
}
protected void tearDown() throws Exception {
logger.debug( "tearDown() - start" );
super.tearDown();
logger.debug( "tearDown() - end" );
}
/**
* 获取2个字符日期的天数差
* @param p_startDate
* @param p_endDate
* @return 天数差
* @author zhuqx
*/
public void testGetDayOfTowDiffDate() throws ParseException {
logger.debug( "testGetDayOfTowDiffDate() - start" );
String startDate = "2005-05-01";
String endDate = "2006-09-30";
long day = dateUtil.getDaysOfTowDiffDate( startDate,endDate );
logger.debug( "day=========" + day);
logger.debug( "week=========" + day/7);
logger.debug( "month=========" + day/30);
logger.debug( "year=========" + day/365);
logger.debug( "testGetDayOfTowDiffDate() - end" );
}
/**
* 获取字符日期一个月的天数
* @param p_date
* @return 天数
* @author zhuqx
*/
public void atestGetDayOfMonth() throws ParseException {
logger.debug( "testGetDayOfTowDiffDate() - start" );
String l_date = "2006-02-01";
String l_format = "yyyy-MM-dd";
long day = dateUtil.getDayOfMonth( dateUtil.toUtilDateFromStrDateByFormat( l_date,l_format ) );
logger.debug( "day=========" + day);
logger.debug( "testGetDayOfTowDiffDate() - end" );
}
//-------------------------------日期转换---------------------------------------------------------------------------
/**
* 字符串型转化util.Date
* @Param: p_strDate 字符串型日期
* @Return: java.util.Date util.Date
* @Throws: ParseException
* @Author: zhuqx
* @Date: 2006-10-31
*/
public void atestToUtilDateByFormat() throws ParseException {
logger.debug( "testGetDayOfTowDiffDate() - start" );
String l_date = "2005-05-01";
Date day = dateUtil.toUtilDateFromStrDateByFormat( l_date,"yyyy-MM-dd" );
logger.debug( "java.util.Date =========" + day);
logger.debug( "testGetDayOfTowDiffDate() - end" );
}
/**
* 字符型日期转化成sql.Date型日期
* @param p_strDate 字符型日期
* @return java.sql.Date sql.Date型日期
* @throws ParseException
* @author shizhuoyang
*/
public void atestToSqlDatet() throws ParseException {
logger.debug( "testToSqlDatet() - start" );
String l_date = "2005-05-01";
Date day = dateUtil.toSqlDateFromStrDate( l_date );
logger.debug( "java.sql.Date=========" + day);
logger.debug( "testToSqlDatet() - end" );
}
/**
* util.Date型日期转化指定的格式字符串型
* @param p_date Date
* @param p_format String
* 格式:"yyyy-MM-dd" / "yyyy-MM-dd hh:mm:ss EE" 年-月-日 时:分:秒 星期 注意MM/mm大小写
* @return String
* @Author: zhuqx
* @Date: 2006-10-31
*/
public void atestToStrDateByFormat() throws ParseException {
logger.debug( "testToStrDateByFormat() - start" );
java.util.Date l_date = new java.util.Date();
String day = dateUtil.toStrDateFromUtilDateByFormat( l_date,"yyyy-MM-dd" );
String day2 = dateUtil.toStrDateFromUtilDateByFormat( l_date,"yyyy-MM-dd hh:mm:ss EE" );
logger.debug( "string-Date-yyyy-MM-dd=========" + day);
logger.debug( "string-Date-yyyy-MM-dd hh:mm:ss=========" + day2);
logger.debug( "testToStrDateByFormat() - end" );
}
/**
* util.Date型日期转化sql.Date型日期
* @Param: p_utilDate util.Date型日期
* @Return: java.sql.Date sql.Date型日期
* @Author: zhuqx
* @Date: 2006-10-31
*/
public void atestToSqlDateFromUtilDate() throws ParseException {
logger.debug( "testToStrDateByFormat() - start" );
java.util.Date l_date = new java.util.Date();
java.sql.Date day = dateUtil.toSqlDateFromUtilDate( l_date);
logger.debug( "java.sql.Date-=========" + day);
logger.debug( "testToStrDateByFormat() - end" );
}
/**
* sql.Date型日期转化util.Date型日期
* @Param: sqlDate sql.Date型日期
* @Return: java.util.Date util.Date型日期
* @Author: zhuqx
* @Date: 2006-10-31
*/
public void atestToUtilDateFromSqlDate() throws ParseException {
logger.debug( "testToStrDateByFormat() - start" );
java.sql.Date l_date = dateUtil.toSqlDateFromStrDate("2005-05-01");
java.util.Date date = dateUtil.toUtilDateFromSqlDate( l_date);
logger.debug( "java.util.Date-=========" + date);
logger.debug( "testToStrDateByFormat() - end" );
}
//-----------------获取日期(各种日期格式)-----------------------------------------------------------------------------------
/**
* 获取当前日期的字符化处理
* @param p_format 日期格式
* @return String 当前时间字符串
* @author zhuqx
* @Date: 2006-10-31
*/
public void atestGetNowOfDateByFormat() throws ParseException {
logger.debug( "testGetNowOfDate() - start" );
//yyyy年MM月dd日 hh:mm:ss EE
String date = dateUtil.getNowOfDateByFormat( "yyyyMM" );
logger.debug( "java.util.Date-=========" + date);
logger.debug( "testGetNowOfDate() - end" );
}
/**
* 获取指定日期格式系统日期的字符型日期
* @param p_format 日期格式
* 格式1:"yyyy-MM-dd"
* 格式2:"yyyy-MM-dd hh:mm:ss EE"
* 格式3:"yyyy年MM月dd日 hh:mm:ss EE"
* 说明: 年-月-日 时:分:秒 星期 注意MM/mm大小写
* @return String 系统时间字符串
* @author zhuqx
* @Date: 2006-10-31
*/
public void atestGetSystemOfDateByFormat() throws ParseException {
logger.debug( "testGetSystemOfDateByFormat() - start" );
//yyyy年MM月dd日 hh:mm:ss EE
String date = dateUtil.getSystemOfDateByFormat( "yyyyMM" );
logger.debug( "java.util.Date-=========" + date);
logger.debug( "testGetSystemOfDateByFormat() - end" );
}
/**
* 获取指定月份的第一天
* @param p_strdate 指定月份
* @param p_formate 日期格式
* @return String 时间字符串
* @author zhuqx
* @Date: 2006-10-31
*/
public void atestGetMonthBegin() throws ParseException {
logger.debug( "testGetMonthBegin() - start" );
//yyyy年MM月dd日 hh:mm:ss EE
String l_strDate = "2005-09-11";
String l_formate = "yyyy-MM-dd";
String date = dateUtil.getDateOfMonthBegin( l_strDate,l_formate );
logger.debug( "java.util.Date-=========" + date);
logger.debug( "testGetMonthBegin() - end" );
}
/**
* 取得指定月份的最后一天
* @param p_strDate 指定月份
* @param p_formate 日期格式
* @return String 时间字符串
* @author zhuqx
* @Date: 2006-10-31
*/
public void atestGetMonthEnd() throws ParseException {
logger.debug( "testGetMonthBegin() - start" );
//yyyy年MM月dd日 hh:mm:ss EE
String l_strDate = "2006-02-11";
String l_formate = "yyyy-MM-dd";
String date = dateUtil.getDateOfMonthEnd( l_strDate,l_formate );
logger.debug( "java.util.Date-=========" + date);
logger.debug( "testGetMonthBegin() - end" );
}
/**
* 获取指定日期的年份,月份,日份,小时,分,秒,毫秒
* @param p_date util.Date日期
* @return int 年份
* @author zhuqx
* @Date: 2006-10-31
*/
public void atestGetYearOfDate() throws ParseException {
logger.debug( "testGetMonthBegin() - start" );
//yyyy年MM月dd日 hh:mm:ss EE
String l_strDate = "2004-02-11 08:25:15";
String l_format = "yyyy-MM-dd hh:mm:ss";
int year = dateUtil.getYearOfDate( dateUtil.toUtilDateFromStrDateByFormat( l_strDate,l_format ));
int month = dateUtil.getMonthOfDate( dateUtil.toUtilDateFromStrDateByFormat( l_strDate,l_format ));
int day = dateUtil.getDayOfDate( dateUtil.toUtilDateFromStrDateByFormat( l_strDate,l_format ));
int hour = dateUtil.getHourOfDate( dateUtil.toUtilDateFromStrDateByFormat( l_strDate,l_format ));
int minute = dateUtil.getMinuteOfDate( dateUtil.toUtilDateFromStrDateByFormat( l_strDate,l_format ));
int second = dateUtil.getSecondOfDate( dateUtil.toUtilDateFromStrDateByFormat( l_strDate,l_format ));
long millis = dateUtil.getMillisOfDate( dateUtil.toUtilDateFromStrDateByFormat( l_strDate,l_format ));
logger.debug( "year==========" + year);
logger.debug( "month==========" + month);
logger.debug( "day==========" + day);
logger.debug( "hour==========" + hour);
logger.debug( "minute==========" + minute);
logger.debug( "second==========" + second);
logger.debug( "millis==========" + millis);
logger.debug( "testGetMonthBegin() - end" );
}
/**
* 是否开始日期在结束日期之前
* @param p_startDate
* @param p_endDate
* @return boolean 在结束日期前:ture;否则:false
* @author zhuqx
*/
public void atestIsStartDateBeforeEndDate() throws ParseException {
Date l_startDate = dateUtil.toUtilDateFromStrDateByFormat( "2005-02-11","yyyy-MM-dd" );
Date l_endDate = dateUtil.toUtilDateFromStrDateByFormat( "2005-02-11","yyyy-MM-dd" );
boolean isBofore = dateUtil.isStartDateBeforeEndDate(l_startDate,l_endDate );
logger.debug( "isBofore=="+ isBofore);
}
/**
* 在当前的时间基础上添加月、天、或者其他
* 例如添加3个月,并且格式化为yyyy-MM-dd格式,
* 这里调用的方式为addMonth(3,Calendar.MONTH,"yyyy-MM-dd")
* @param p_count 时间的数量
* @param p_field 添加的域
* @param p_format 时间转化格式,例如:yyyy-MM-dd hh:mm:ss 或者yyyy-mm-dd等
* @return 添加后格式化的时间
* @Date: 2006-10-31
*/
public void atestAddDate() throws ParseException {
Date l_startDate = dateUtil.toUtilDateFromStrDateByFormat( "2006-02-27 07:59:59","yyyy-MM-dd hh:mm:ss" );
int l_count = 2;
// int l_field = Calendar.YEAR;
// int l_field = Calendar.MONTH;
int l_field = Calendar.DATE;
// int l_field = Calendar.HOUR;
// int l_field = Calendar.MINUTE;
// int l_field = Calendar.SECOND;
String l_format = "yyyy-MM-dd hh:mm:ss";
String date = this.dateUtil.addDate( l_startDate,l_count,l_field,l_format );
logger.debug( "addDate============"+date );
}
/**
* 判断给定日期是不是润年
* @param p_date 给定日期
* @return boolean 如果给定的年份为闰年,则返回 true;否则返回 false。
* @Date: 2006-10-31
*/
public void atestIsLeapYear() throws ParseException {
Date l_date = dateUtil.toUtilDateFromStrDateByFormat( "2000-01-25","yyyy-MM-dd" );
boolean isLeap = dateUtil.isLeapYear( l_date );
logger.debug( "isLeapYear="+ isLeap );
}
}
* 有关日期工具类(extends TimeUtil)
*
* TimeUtil主要功能有:
* 1.各种日期类型(字符,util.Date,sql.Date,Calendar等)转换
* 2.获取指定日期的年份,月份,日份,小时,分,秒,毫秒
* 3.获取当前/系统日期(指定日期格式)
* 4.获取字符日期一个月的天数
* 5.获取指定月份的第一天,最后一天
*
* DateUtil主要功能有:
* 1.日期比较
* 2.获取2个字符日期的天数差,周数差,月数差,年数差
* 3.日期添加
* 4.判断给定日期是不是润年
*/package com.aimtime.financing.service.util;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.text.*;public abstract class TimeUtil {
//---当前日期的年,月,日,时,分,秒
public static Calendar now = Calendar.getInstance();
int year = now.get( Calendar.YEAR );
int date = now.get( Calendar.DAY_OF_MONTH );
int month = now.get( Calendar.MONTH ) + 1;
int hour = now.get( Calendar.HOUR );
int min = now.get( Calendar.MINUTE );
int sec = now.get( Calendar.SECOND );
//-------------------------------日期类型转换---------------------------------------------------------------------------
/**
* 字符型日期转化util.Date型日期
* @Param:p_strDate 字符型日期
* @param p_format 格式:"yyyy-MM-dd" / "yyyy-MM-dd hh:mm:ss"
* @Return:java.util.Date util.Date型日期
* @Throws: ParseException
* @Author: zhuqx
* @Date: 2006-10-31
*/
public static java.util.Date toUtilDateFromStrDateByFormat( String p_strDate, String p_format )
throws ParseException {
java.util.Date l_date = null;
java.text.DateFormat df = new java.text.SimpleDateFormat( p_format );
if ( p_strDate != null && ( !"".equals( p_strDate ) ) && p_format != null && ( !"".equals( p_format ) ) ) {
l_date = df.parse( p_strDate );
}
return l_date;
}
/**
* 字符型日期转化成sql.Date型日期
* @param p_strDate 字符型日期
* @return java.sql.Date sql.Date型日期
* @throws ParseException
* @Author: zhuqx
* @Date: 2006-10-31
*/
public static java.sql.Date toSqlDateFromStrDate( String p_strDate ) throws ParseException {
java.sql.Date returnDate = null;
java.text.DateFormat sdf = new java.text.SimpleDateFormat();
if ( p_strDate != null && ( !"".equals( p_strDate ) ) ) {
returnDate = new java.sql.Date( sdf.parse( p_strDate ).getTime() );
}
return returnDate;
}
/**
* util.Date型日期转化指定格式的字符串型日期
* @param p_date Date
* @param p_format String
* 格式1:"yyyy-MM-dd"
* 格式2:"yyyy-MM-dd hh:mm:ss EE"
* 格式3:"yyyy年MM月dd日 hh:mm:ss EE"
* 说明: 年-月-日 时:分:秒 星期 注意MM/mm大小写
* @return String
* @Author: zhuqx
* @Date: 2006-10-31
*/
public static String toStrDateFromUtilDateByFormat( java.util.Date p_utilDate, String p_format ) throws ParseException {
String l_result = "";
if ( p_utilDate != null ) {
SimpleDateFormat sdf = new SimpleDateFormat( p_format );
l_result = sdf.format( p_utilDate );
}
return l_result;
}
/**
* util.Date型日期转化转化成Calendar日期
* @param p_utilDate Date
* @return Calendar
* @Author: zhuqx
* @Date: 2006-10-31
*/
public static Calendar toCalendarFromUtilDate(java.util.Date p_utilDate) {
Calendar c = Calendar.getInstance();
c.setTime(p_utilDate);
return c;
}
/**
* util.Date型日期转化sql.Date(年月日)型日期
* @Param: p_utilDate util.Date型日期
* @Return: java.sql.Date sql.Date型日期
* @Author: zhuqx
* @Date: 2006-10-31
*/
public static java.sql.Date toSqlDateFromUtilDate( java.util.Date p_utilDate ) {
java.sql.Date returnDate = null;
if ( p_utilDate != null ) {
returnDate = new java.sql.Date( p_utilDate.getTime() );
}
return returnDate;
}
/**
* util.Date型日期转化sql.Time(时分秒)型日期
* @Param: p_utilDate util.Date型日期
* @Return: java.sql.Time sql.Time型日期
* @Author: zhuqx
* @Date: 2006-10-31
*/
public static java.sql.Time toSqlTimeFromUtilDate( java.util.Date p_utilDate ) {
java.sql.Time returnDate = null;
if ( p_utilDate != null ) {
returnDate = new java.sql.Time( p_utilDate.getTime() );
}
return returnDate;
}
/**
* util.Date型日期转化sql.Date(时分秒)型日期
* @Param: p_utilDate util.Date型日期
* @Return: java.sql.Timestamp sql.Timestamp型日期
* @Author: zhuqx
* @Date: 2006-10-31
*/
public static java.sql.Timestamp toSqlTimestampFromUtilDate( java.util.Date p_utilDate ) {
java.sql.Timestamp returnDate = null;
if ( p_utilDate != null ) {
returnDate = new java.sql.Timestamp( p_utilDate.getTime() );
}
return returnDate;
}
/**
* sql.Date型日期转化util.Date型日期
* @Param: sqlDate sql.Date型日期
* @Return: java.util.Date util.Date型日期
* @Author: zhuqx
* @Date: 2006-10-31
*/
public static java.util.Date toUtilDateFromSqlDate( java.sql.Date p_sqlDate ) {
java.util.Date returnDate = null;
if ( p_sqlDate != null ) {
returnDate = new java.util.Date( p_sqlDate.getTime() );
}
return returnDate;
}
//-----------------获取指定日期的年份,月份,日份,小时,分,秒,毫秒----------------------------
/**
* 获取指定日期的年份
* @param p_date util.Date日期
* @return int 年份
* @author zhuqx
* @Date: 2006-10-31
*/
public static int getYearOfDate( java.util.Date p_date ) {
java.util.Calendar c = java.util.Calendar.getInstance();
c.setTime( p_date );
return c.get( java.util.Calendar.YEAR );
}
/**
* 获取指定日期的月份
* @param p_date util.Date日期
* @return int 月份
* @author zhuqx
* @Date: 2006-10-31
*/
public static int getMonthOfDate( java.util.Date p_date ) {
java.util.Calendar c = java.util.Calendar.getInstance();
c.setTime( p_date );
return c.get( java.util.Calendar.MONTH ) + 1;
}
/**
* 获取指定日期的日份
* @param p_date util.Date日期
* @return int 日份
* @author zhuqx
* @Date: 2006-10-31
*/
public static int getDayOfDate( java.util.Date p_date ) {
java.util.Calendar c = java.util.Calendar.getInstance();
c.setTime( p_date );
return c.get( java.util.Calendar.DAY_OF_MONTH );
}
/**
* 获取指定日期的小时
* @param p_date util.Date日期
* @return int 日份
* @author zhuqx
* @Date: 2006-10-31
*/
public static int getHourOfDate( java.util.Date p_date ) {
java.util.Calendar c = java.util.Calendar.getInstance();
c.setTime( p_date );
return c.get( java.util.Calendar.HOUR_OF_DAY );
}
/**
* 获取指定日期的分钟
* @param p_date util.Date日期
* @return int 分钟
* @author zhuqx
* @Date: 2006-10-31
*/
public static int getMinuteOfDate( java.util.Date p_date ) {
java.util.Calendar c = java.util.Calendar.getInstance();
c.setTime( p_date );
return c.get( java.util.Calendar.MINUTE );
}
/**
* 获取指定日期的秒钟
* @param p_date util.Date日期
* @return int 秒钟
* @author zhuqx
* @Date: 2006-10-31
*/
public static int getSecondOfDate( java.util.Date p_date ) {
java.util.Calendar c = java.util.Calendar.getInstance();
c.setTime( p_date );
return c.get( java.util.Calendar.SECOND );
}
/**
* 获取指定日期的毫秒
* @param p_date util.Date日期
* @return long 毫秒
* @author zhuqx
* @Date: 2006-10-31
*/
public static long getMillisOfDate( java.util.Date p_date ) {
java.util.Calendar c = java.util.Calendar.getInstance();
c.setTime( p_date );
return c.getTimeInMillis();
}
//-----------------获取当前/系统日期(指定日期格式)-----------------------------------------------------------------------------------
/**
* 获取指定日期格式当前日期的字符型日期
* @param p_format 日期格式
* 格式1:"yyyy-MM-dd"
* 格式2:"yyyy-MM-dd hh:mm:ss EE"
* 格式3:"yyyy年MM月dd日 hh:mm:ss EE"
* 说明: 年-月-日 时:分:秒 星期 注意MM/mm大小写
* @return String 当前时间字符串
* @author zhuqx
* @Date: 2006-10-31
*/
public static String getNowOfDateByFormat( String p_format ) {
Date d = new Date();
SimpleDateFormat sdf = new SimpleDateFormat( p_format );
String dateStr = sdf.format( d );
return dateStr;
}
/**
* 获取指定日期格式系统日期的字符型日期
* @param p_format 日期格式
* 格式1:"yyyy-MM-dd"
* 格式2:"yyyy-MM-dd hh:mm:ss EE"
* 格式3:"yyyy年MM月dd日 hh:mm:ss EE"
* 说明: 年-月-日 时:分:秒 星期 注意MM/mm大小写
* @return String 系统时间字符串
* @author zhuqx
* @Date: 2006-10-31
*/
public static String getSystemOfDateByFormat( String p_format ) {
long time = System.currentTimeMillis();
Date d2 = new Date();
Date d = new Date( time );
SimpleDateFormat sdf = new SimpleDateFormat( p_format );
String dateStr = sdf.format( d );
return dateStr;
}
/**
* 获取字符日期一个月的天数
* @param p_date
* @return 天数
* @author zhuqx
*/
public static long getDayOfMonth( Date p_date ) throws ParseException {
int year = getYearOfDate(p_date);
int month = getMonthOfDate( p_date )-1;
int day = getDayOfDate( p_date );
int hour = getHourOfDate( p_date );
int minute = getMinuteOfDate( p_date );
int second = getSecondOfDate( p_date );
Calendar l_calendar = new GregorianCalendar(year,month,day,hour,minute,second);
return l_calendar.getActualMaximum( l_calendar.DAY_OF_MONTH );
}
// -----------------获取指定月份的第一天,最后一天 ---------------------------------------------------------------------------
/**
* 获取指定月份的第一天
* @param p_strDate 指定月份
* @param p_formate 日期格式
* @return String 时间字符串
* @author zhuqx
* @Date: 2006-10-31
*/
public static String getDateOfMonthBegin( String p_strDate, String p_format ) throws ParseException {
java.util.Date date = toUtilDateFromStrDateByFormat( p_strDate,p_format );
return toStrDateFromUtilDateByFormat( date,"yyyy-MM" ) + "-01";
}
/**
* 获取指定月份的最后一天
* @param p_strDate 指定月份
* @param p_formate 日期格式
* @return String 时间字符串
* @author zhuqx
* @Date: 2006-10-31
*/
public static String getDateOfMonthEnd( String p_strDate, String p_format ) throws ParseException {
java.util.Date date = toUtilDateFromStrDateByFormat( getDateOfMonthBegin( p_strDate,p_format ),p_format );
Calendar calendar = Calendar.getInstance();
calendar.setTime( date );
calendar.add( Calendar.MONTH,1 );
calendar.add( Calendar.DAY_OF_YEAR,-1 );
return toStrDateFromUtilDateByFormat( calendar.getTime(),p_format );
}
}package com.aimtime.financing.service.util;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;import org.apache.log4j.Logger;/**
* @Functionality: 有关日期工具类
*/
public class DateUtil extends TimeUtil {
/**
* Logger for this class
*/
private static final Logger logger = Logger.getLogger( DateUtil.class );
/** 日期转化 */
private static final SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd" );
/**
* @Functionality: 构造函数
*/
public DateUtil() {}
//----------------------日期计算---------------------------------------------------------------------------------
/**
* 是否开始日期在结束日期之前(不包括相等)
* @param p_startDate
* @param p_endDate
* @return boolean 在结束日期前:ture;否则:false
* @author zhuqx
* @Date: 2006-10-31
*/
public static boolean isStartDateBeforeEndDate( Date p_startDate, Date p_endDate ) throws ParseException {
long l_startTime = getMillisOfDate( p_startDate );
long l_endTime = getMillisOfDate( p_endDate );
return ( l_startTime - l_endTime > (long) 0 ) ? true : false;
}
/**
* 获取2个字符日期的天数差
* @param p_startDate
* @param p_endDate
* @return 天数差
* @author zhuqx
* @Date: 2006-10-31
*/
public static long getDaysOfTowDiffDate( String p_startDate, String p_endDate ) throws ParseException {
Date l_startDate = toUtilDateFromStrDateByFormat( p_startDate,"yyyy-MM-dd");
Date l_endDate = toUtilDateFromStrDateByFormat( p_endDate, "yyyy-MM-dd");
long l_startTime = getMillisOfDate( l_startDate );
long l_endTime = getMillisOfDate( l_endDate );
long betweenDays = (long) ( ( l_endTime - l_startTime ) / ( 1000 * 60 * 60 * 24 ) );
return betweenDays;
}
/**
* 获取2个字符日期的周数差
* @param p_startDate
* @param p_endDate
* @return 周数差
* @author zhuqx
* @Date: 2006-10-31
*/
public static long getWeeksOfTowDiffDate( String p_startDate, String p_endDate ) throws ParseException {
return getDaysOfTowDiffDate(p_startDate,p_endDate)/7;
}
/**
* 获取2个字符日期的月数差
* @param p_startDate
* @param p_endDate
* @return 月数差
* @author zhuqx
* @Date: 2006-10-31
*/
public static long getMonthsOfTowDiffDate( String p_startDate, String p_endDate ) throws ParseException {
return getDaysOfTowDiffDate(p_startDate,p_endDate)/30;
}
/**
* 获取2个字符日期的年数差
* @param p_startDate
* @param p_endDate
* @return 年数差
* @author zhuqx
* @Date: 2006-10-31
*/
public static long getYearsOfTowDiffDate( String p_startDate, String p_endDate ) throws ParseException {
return getDaysOfTowDiffDate(p_startDate,p_endDate)/365;
}
/**
* 在给定的日期基础上添加年,月,日、时,分,秒
* 例如要再2006-10-21(uitl日期)添加3个月,并且格式化为yyyy-MM-dd格式,
* 这里调用的方式为 addDate(2006-10-21,3,Calendar.MONTH,"yyyy-MM-dd")
* @param p_startDate 给定的日期
* @param p_count 时间的数量
* @param p_field 添加的域
* @param p_format 时间转化格式,例如:yyyy-MM-dd hh:mm:ss 或者yyyy-mm-dd等
* @return 添加后格式化的时间
* @Date: 2006-10-31
*/
public static String addDate(Date p_startDate,int p_count,int p_field,String p_format)throws ParseException {
//年,月,日、时,分,秒
int l_year = getYearOfDate(p_startDate);
int l_month = getMonthOfDate( p_startDate )-1;
int l_day = getDayOfDate( p_startDate );
int l_hour = getHourOfDate( p_startDate );
int l_minute = getMinuteOfDate( p_startDate );
int l_second = getSecondOfDate( p_startDate );
Calendar l_calendar = new GregorianCalendar(l_year,l_month,l_day,l_hour,l_minute,l_second);
l_calendar.add(p_field,p_count);
return toStrDateFromUtilDateByFormat(l_calendar.getTime(),p_format);
}
/**
* 判断给定日期是不是润年
* @param p_date 给定日期
* @return boolean 如果给定的年份为闰年,则返回 true;否则返回 false。
* @Date: 2006-10-31
*/
public static boolean isLeapYear(Date p_date) {
int l_year = getYearOfDate( p_date );
GregorianCalendar l_calendar = new GregorianCalendar();
return l_calendar.isLeapYear( l_year );
}
}package com.aimtime.financing.service.util;import java.text.ParseException;
import java.util.Calendar;
import java.util.Date;import junit.framework.TestCase;import org.apache.log4j.Logger;public class DateUtilTest extends TestCase {
/**
* Logger for this class
*/
private static final Logger logger = Logger.getLogger( DateUtilTest.class );
DateUtil dateUtil;
protected void setUp() throws Exception {
logger.debug( "setUp() - start" );
super.setUp();
dateUtil = new DateUtil();
logger.debug( "setUp() - end" );
}
protected void tearDown() throws Exception {
logger.debug( "tearDown() - start" );
super.tearDown();
logger.debug( "tearDown() - end" );
}
/**
* 获取2个字符日期的天数差
* @param p_startDate
* @param p_endDate
* @return 天数差
* @author zhuqx
*/
public void testGetDayOfTowDiffDate() throws ParseException {
logger.debug( "testGetDayOfTowDiffDate() - start" );
String startDate = "2005-05-01";
String endDate = "2006-09-30";
long day = dateUtil.getDaysOfTowDiffDate( startDate,endDate );
logger.debug( "day=========" + day);
logger.debug( "week=========" + day/7);
logger.debug( "month=========" + day/30);
logger.debug( "year=========" + day/365);
logger.debug( "testGetDayOfTowDiffDate() - end" );
}
/**
* 获取字符日期一个月的天数
* @param p_date
* @return 天数
* @author zhuqx
*/
public void atestGetDayOfMonth() throws ParseException {
logger.debug( "testGetDayOfTowDiffDate() - start" );
String l_date = "2006-02-01";
String l_format = "yyyy-MM-dd";
long day = dateUtil.getDayOfMonth( dateUtil.toUtilDateFromStrDateByFormat( l_date,l_format ) );
logger.debug( "day=========" + day);
logger.debug( "testGetDayOfTowDiffDate() - end" );
}
//-------------------------------日期转换---------------------------------------------------------------------------
/**
* 字符串型转化util.Date
* @Param: p_strDate 字符串型日期
* @Return: java.util.Date util.Date
* @Throws: ParseException
* @Author: zhuqx
* @Date: 2006-10-31
*/
public void atestToUtilDateByFormat() throws ParseException {
logger.debug( "testGetDayOfTowDiffDate() - start" );
String l_date = "2005-05-01";
Date day = dateUtil.toUtilDateFromStrDateByFormat( l_date,"yyyy-MM-dd" );
logger.debug( "java.util.Date =========" + day);
logger.debug( "testGetDayOfTowDiffDate() - end" );
}
/**
* 字符型日期转化成sql.Date型日期
* @param p_strDate 字符型日期
* @return java.sql.Date sql.Date型日期
* @throws ParseException
* @author shizhuoyang
*/
public void atestToSqlDatet() throws ParseException {
logger.debug( "testToSqlDatet() - start" );
String l_date = "2005-05-01";
Date day = dateUtil.toSqlDateFromStrDate( l_date );
logger.debug( "java.sql.Date=========" + day);
logger.debug( "testToSqlDatet() - end" );
}
/**
* util.Date型日期转化指定的格式字符串型
* @param p_date Date
* @param p_format String
* 格式:"yyyy-MM-dd" / "yyyy-MM-dd hh:mm:ss EE" 年-月-日 时:分:秒 星期 注意MM/mm大小写
* @return String
* @Author: zhuqx
* @Date: 2006-10-31
*/
public void atestToStrDateByFormat() throws ParseException {
logger.debug( "testToStrDateByFormat() - start" );
java.util.Date l_date = new java.util.Date();
String day = dateUtil.toStrDateFromUtilDateByFormat( l_date,"yyyy-MM-dd" );
String day2 = dateUtil.toStrDateFromUtilDateByFormat( l_date,"yyyy-MM-dd hh:mm:ss EE" );
logger.debug( "string-Date-yyyy-MM-dd=========" + day);
logger.debug( "string-Date-yyyy-MM-dd hh:mm:ss=========" + day2);
logger.debug( "testToStrDateByFormat() - end" );
}
/**
* util.Date型日期转化sql.Date型日期
* @Param: p_utilDate util.Date型日期
* @Return: java.sql.Date sql.Date型日期
* @Author: zhuqx
* @Date: 2006-10-31
*/
public void atestToSqlDateFromUtilDate() throws ParseException {
logger.debug( "testToStrDateByFormat() - start" );
java.util.Date l_date = new java.util.Date();
java.sql.Date day = dateUtil.toSqlDateFromUtilDate( l_date);
logger.debug( "java.sql.Date-=========" + day);
logger.debug( "testToStrDateByFormat() - end" );
}
/**
* sql.Date型日期转化util.Date型日期
* @Param: sqlDate sql.Date型日期
* @Return: java.util.Date util.Date型日期
* @Author: zhuqx
* @Date: 2006-10-31
*/
public void atestToUtilDateFromSqlDate() throws ParseException {
logger.debug( "testToStrDateByFormat() - start" );
java.sql.Date l_date = dateUtil.toSqlDateFromStrDate("2005-05-01");
java.util.Date date = dateUtil.toUtilDateFromSqlDate( l_date);
logger.debug( "java.util.Date-=========" + date);
logger.debug( "testToStrDateByFormat() - end" );
}
//-----------------获取日期(各种日期格式)-----------------------------------------------------------------------------------
/**
* 获取当前日期的字符化处理
* @param p_format 日期格式
* @return String 当前时间字符串
* @author zhuqx
* @Date: 2006-10-31
*/
public void atestGetNowOfDateByFormat() throws ParseException {
logger.debug( "testGetNowOfDate() - start" );
//yyyy年MM月dd日 hh:mm:ss EE
String date = dateUtil.getNowOfDateByFormat( "yyyyMM" );
logger.debug( "java.util.Date-=========" + date);
logger.debug( "testGetNowOfDate() - end" );
}
/**
* 获取指定日期格式系统日期的字符型日期
* @param p_format 日期格式
* 格式1:"yyyy-MM-dd"
* 格式2:"yyyy-MM-dd hh:mm:ss EE"
* 格式3:"yyyy年MM月dd日 hh:mm:ss EE"
* 说明: 年-月-日 时:分:秒 星期 注意MM/mm大小写
* @return String 系统时间字符串
* @author zhuqx
* @Date: 2006-10-31
*/
public void atestGetSystemOfDateByFormat() throws ParseException {
logger.debug( "testGetSystemOfDateByFormat() - start" );
//yyyy年MM月dd日 hh:mm:ss EE
String date = dateUtil.getSystemOfDateByFormat( "yyyyMM" );
logger.debug( "java.util.Date-=========" + date);
logger.debug( "testGetSystemOfDateByFormat() - end" );
}
/**
* 获取指定月份的第一天
* @param p_strdate 指定月份
* @param p_formate 日期格式
* @return String 时间字符串
* @author zhuqx
* @Date: 2006-10-31
*/
public void atestGetMonthBegin() throws ParseException {
logger.debug( "testGetMonthBegin() - start" );
//yyyy年MM月dd日 hh:mm:ss EE
String l_strDate = "2005-09-11";
String l_formate = "yyyy-MM-dd";
String date = dateUtil.getDateOfMonthBegin( l_strDate,l_formate );
logger.debug( "java.util.Date-=========" + date);
logger.debug( "testGetMonthBegin() - end" );
}
/**
* 取得指定月份的最后一天
* @param p_strDate 指定月份
* @param p_formate 日期格式
* @return String 时间字符串
* @author zhuqx
* @Date: 2006-10-31
*/
public void atestGetMonthEnd() throws ParseException {
logger.debug( "testGetMonthBegin() - start" );
//yyyy年MM月dd日 hh:mm:ss EE
String l_strDate = "2006-02-11";
String l_formate = "yyyy-MM-dd";
String date = dateUtil.getDateOfMonthEnd( l_strDate,l_formate );
logger.debug( "java.util.Date-=========" + date);
logger.debug( "testGetMonthBegin() - end" );
}
/**
* 获取指定日期的年份,月份,日份,小时,分,秒,毫秒
* @param p_date util.Date日期
* @return int 年份
* @author zhuqx
* @Date: 2006-10-31
*/
public void atestGetYearOfDate() throws ParseException {
logger.debug( "testGetMonthBegin() - start" );
//yyyy年MM月dd日 hh:mm:ss EE
String l_strDate = "2004-02-11 08:25:15";
String l_format = "yyyy-MM-dd hh:mm:ss";
int year = dateUtil.getYearOfDate( dateUtil.toUtilDateFromStrDateByFormat( l_strDate,l_format ));
int month = dateUtil.getMonthOfDate( dateUtil.toUtilDateFromStrDateByFormat( l_strDate,l_format ));
int day = dateUtil.getDayOfDate( dateUtil.toUtilDateFromStrDateByFormat( l_strDate,l_format ));
int hour = dateUtil.getHourOfDate( dateUtil.toUtilDateFromStrDateByFormat( l_strDate,l_format ));
int minute = dateUtil.getMinuteOfDate( dateUtil.toUtilDateFromStrDateByFormat( l_strDate,l_format ));
int second = dateUtil.getSecondOfDate( dateUtil.toUtilDateFromStrDateByFormat( l_strDate,l_format ));
long millis = dateUtil.getMillisOfDate( dateUtil.toUtilDateFromStrDateByFormat( l_strDate,l_format ));
logger.debug( "year==========" + year);
logger.debug( "month==========" + month);
logger.debug( "day==========" + day);
logger.debug( "hour==========" + hour);
logger.debug( "minute==========" + minute);
logger.debug( "second==========" + second);
logger.debug( "millis==========" + millis);
logger.debug( "testGetMonthBegin() - end" );
}
/**
* 是否开始日期在结束日期之前
* @param p_startDate
* @param p_endDate
* @return boolean 在结束日期前:ture;否则:false
* @author zhuqx
*/
public void atestIsStartDateBeforeEndDate() throws ParseException {
Date l_startDate = dateUtil.toUtilDateFromStrDateByFormat( "2005-02-11","yyyy-MM-dd" );
Date l_endDate = dateUtil.toUtilDateFromStrDateByFormat( "2005-02-11","yyyy-MM-dd" );
boolean isBofore = dateUtil.isStartDateBeforeEndDate(l_startDate,l_endDate );
logger.debug( "isBofore=="+ isBofore);
}
/**
* 在当前的时间基础上添加月、天、或者其他
* 例如添加3个月,并且格式化为yyyy-MM-dd格式,
* 这里调用的方式为addMonth(3,Calendar.MONTH,"yyyy-MM-dd")
* @param p_count 时间的数量
* @param p_field 添加的域
* @param p_format 时间转化格式,例如:yyyy-MM-dd hh:mm:ss 或者yyyy-mm-dd等
* @return 添加后格式化的时间
* @Date: 2006-10-31
*/
public void atestAddDate() throws ParseException {
Date l_startDate = dateUtil.toUtilDateFromStrDateByFormat( "2006-02-27 07:59:59","yyyy-MM-dd hh:mm:ss" );
int l_count = 2;
// int l_field = Calendar.YEAR;
// int l_field = Calendar.MONTH;
int l_field = Calendar.DATE;
// int l_field = Calendar.HOUR;
// int l_field = Calendar.MINUTE;
// int l_field = Calendar.SECOND;
String l_format = "yyyy-MM-dd hh:mm:ss";
String date = this.dateUtil.addDate( l_startDate,l_count,l_field,l_format );
logger.debug( "addDate============"+date );
}
/**
* 判断给定日期是不是润年
* @param p_date 给定日期
* @return boolean 如果给定的年份为闰年,则返回 true;否则返回 false。
* @Date: 2006-10-31
*/
public void atestIsLeapYear() throws ParseException {
Date l_date = dateUtil.toUtilDateFromStrDateByFormat( "2000-01-25","yyyy-MM-dd" );
boolean isLeap = dateUtil.isLeapYear( l_date );
logger.debug( "isLeapYear="+ isLeap );
}
}