/**
2* 有关日期工具类(extends TimeUtil)
3*
4* TimeUtil主要 功能有:
5* 1.各种日期类型(字符,util.Date, sql.Date,Calendar等)转换
6* 2.获取指定日期的年份,月份,日份,小时,分,秒,毫秒
7* 3.获取当前/系统日期(指定日期格式)
8* 4.获取字符日期一个月的天数
9* 5.获取指定月份的第一天,最后一天
10*
11* DateUtil主要功能有:
12* 1.日期比较
13* 2.获取2个字符日期的天数差,周数差,月数差,年数差
14* 3.日期添加
15* 4.判断给定日期是不是润年
16*/package com.aimtime.financing.service.util;
17import java.util.Calendar;
18import java.util.Date;
19import java.util.GregorianCalendar;
20import java.text.*;public abstract class TimeUtil {
21
22//---当前日期的年,月,日,时,分,秒
23public static Calendar now = Calendar.getInstance();
24int year = now.get( Calendar.YEAR );
25int date = now.get( Calendar.DAY_OF_MONTH );
26int month = now.get( Calendar.MONTH ) + 1;
27int hour = now.get( Calendar.HOUR );
28int min = now.get( Calendar.MINUTE );
29int sec = now.get( Calendar.SECOND );
30
31//-------------------------------日期类型转换---------------------------------------------------------------------------
32/** *//**
33* 字符型日期转化util.Date型日期
34* @Param:p_strDate 字符型日期
35* @param p_format 格式:"yyyy-MM-dd" / "yyyy-MM-dd hh:mm:ss"
36* @Return:java.util.Date util.Date型日期
37* @Throws: ParseException
38* @Author: zhuqx
39* @Date: 2006-10-31
40*/
41public static java.util.Date toUtilDateFromStrDateByFormat( String p_strDate, String p_format )
42 throws ParseException {
43 java.util.Date l_date = null;
44 java.text.DateFormat df = new java.text.SimpleDateFormat( p_format );
45 if ( p_strDate != null && ( !"".equals( p_strDate ) ) && p_format != null && ( !"".equals( p_format ) ) ) {
46 l_date = df.parse( p_strDate );
47 }
48 return l_date;
49}
50
51/** *//**
52* 字符型日期转化成sql.Date型日期
53* @param p_strDate 字符型日期
54* @return java.sql.Date sql.Date型日期
55* @throws ParseException
56* @Author: zhuqx
57* @Date: 2006-10-31
58*/
59public static java.sql.Date toSqlDateFromStrDate( String p_strDate ) throws ParseException {
60 java.sql.Date returnDate = null;
61 java.text.DateFormat sdf = new java.text.SimpleDateFormat();
62 if ( p_strDate != null && ( !"".equals( p_strDate ) ) ) {
63 returnDate = new java.sql.Date( sdf.parse( p_strDate ).getTime() );
64 }
65 return returnDate;
66}
67
68/** *//**
69* util.Date型日期转化指定格式的字符串型日期
70* @param p_date Date
71* @param p_format String
72* 格式1:"yyyy-MM-dd"
73* 格式2:"yyyy-MM-dd hh:mm:ss EE"
74* 格式3:"yyyy年MM月dd日 hh:mm:ss EE"
75* 说明: 年-月-日 时:分:秒 星期 注意MM/mm大小写
76* @return String
77* @Author: zhuqx
78* @Date: 2006-10-31
79*/
80public static String toStrDateFromUtilDateByFormat( java.util.Date p_utilDate, String p_format ) throws ParseException {
81 String l_result = "";
82 if ( p_utilDate != null ) {
83 SimpleDateFormat sdf = new SimpleDateFormat( p_format );
84 l_result = sdf.format( p_utilDate );
85 }
86 return l_result;
87}
88
89/** *//**
90* util.Date型日期转化转化成Calendar日期
91* @param p_utilDate Date
92* @return Calendar
93* @Author: zhuqx
94* @Date: 2006-10-31
95*/
96public static Calendar toCalendarFromUtilDate(java.util.Date p_utilDate) {
97 Calendar c = Calendar.getInstance();
98 c.setTime(p_utilDate);
99 return c;
100}
101
102/** *//**
103* util.Date型日期转化sql.Date(年月日)型日期
104* @Param: p_utilDate util.Date型日期
105* @Return: java.sql.Date sql.Date型日期
106* @Author: zhuqx
107* @Date: 2006-10-31
108*/
109public static java.sql.Date toSqlDateFromUtilDate( java.util.Date p_utilDate ) {
110 java.sql.Date returnDate = null;
111 if ( p_utilDate != null ) {
112 returnDate = new java.sql.Date( p_utilDate.getTime() );
113 }
114 return returnDate;
115}
116
117/** *//**
118* util.Date型日期转化sql.Time(时分秒)型日期
119* @Param: p_utilDate util.Date型日期
120* @Return: java.sql.Time sql.Time型日期
121* @Author: zhuqx
122* @Date: 2006-10-31
123*/
124public static java.sql.Time toSqlTimeFromUtilDate( java.util.Date p_utilDate ) {
125 java.sql.Time returnDate = null;
126 if ( p_utilDate != null ) {
127 returnDate = new java.sql.Time( p_utilDate.getTime() );
128 }
129 return returnDate;
130}
131
132/** *//**
133* util.Date型日期转化sql.Date(时分秒)型日期
134* @Param: p_utilDate util.Date型日期
135* @Return: java.sql.Timestamp sql.Timestamp型日期
136* @Author: zhuqx
137* @Date: 2006-10-31
138*/
139public static java.sql.Timestamp toSqlTimestampFromUtilDate( java.util.Date p_utilDate ) {
140 java.sql.Timestamp returnDate = null;
141 if ( p_utilDate != null ) {
142 returnDate = new java.sql.Timestamp( p_utilDate.getTime() );
143 }
144 return returnDate;
145}
146
147/** *//**
148* sql.Date型日期转化util.Date型日期
149* @Param: sqlDate sql.Date型日期
150* @Return: java.util.Date util.Date型日期
151* @Author: zhuqx
152* @Date: 2006-10-31
153*/
154public static java.util.Date toUtilDateFromSqlDate( java.sql.Date p_sqlDate ) {
155 java.util.Date returnDate = null;
156 if ( p_sqlDate != null ) {
157 returnDate = new java.util.Date( p_sqlDate.getTime() );
158 }
159 return returnDate;
160}
161
162//-----------------获取指定日期的年份,月份,日份,小时,分,秒,毫秒----------------------------
163/** *//**
164* 获取指定日期的年份
165* @param p_date util.Date日期
166* @return int 年份
167* @author zhuqx
168* @Date: 2006-10-31
169*/
170public static int getYearOfDate( java.util.Date p_date ) {
171 java.util.Calendar c = java.util.Calendar.getInstance();
172 c.setTime( p_date );
173 return c.get( java.util.Calendar.YEAR );
174}
175
176/** *//**
177* 获取指定日期的月份
178* @param p_date util.Date日期
179* @return int 月份
180* @author zhuqx
181* @Date: 2006-10-31
182*/
183public static int getMonthOfDate( java.util.Date p_date ) {
184 java.util.Calendar c = java.util.Calendar.getInstance();
185 c.setTime( p_date );
186 return c.get( java.util.Calendar.MONTH ) + 1;
187}
188
189/** *//**
190* 获取指定日期的日份
191* @param p_date util.Date日期
192* @return int 日份
193* @author zhuqx
194* @Date: 2006-10-31
195*/
196public static int getDayOfDate( java.util.Date p_date ) {
197 java.util.Calendar c = java.util.Calendar.getInstance();
198 c.setTime( p_date );
199 return c.get( java.util.Calendar.DAY_OF_MONTH );
200}
201
202/** *//**
203* 获取指定日期的小时
204* @param p_date util.Date日期
205* @return int 日份
206* @author zhuqx
207* @Date: 2006-10-31
208*/
209public static int getHourOfDate( java.util.Date p_date ) {
210 java.util.Calendar c = java.util.Calendar.getInstance();
211 c.setTime( p_date );
212 return c.get( java.util.Calendar.HOUR_OF_DAY );
213}
214
215/** *//**
216* 获取指定日期的分钟
217* @param p_date util.Date日期
218* @return int 分钟
219* @author zhuqx
220* @Date: 2006-10-31
221*/
222public static int getMinuteOfDate( java.util.Date p_date ) {
223 java.util.Calendar c = java.util.Calendar.getInstance();
224 c.setTime( p_date );
225 return c.get( java.util.Calendar.MINUTE );
226}
227
228/** *//**
229* 获取指定日期的秒钟
230* @param p_date util.Date日期
231* @return int 秒钟
232* @author zhuqx
233* @Date: 2006-10-31
234*/
235public static int getSecondOfDate( java.util.Date p_date ) {
236 java.util.Calendar c = java.util.Calendar.getInstance();
237 c.setTime( p_date );
238 return c.get( java.util.Calendar.SECOND );
239}
240
241/** *//**
242* 获取指定日期的毫秒
243* @param p_date util.Date日期
244* @return long 毫秒
245* @author zhuqx
246* @Date: 2006-10-31
247*/
248public static long getMillisOfDate( java.util.Date p_date ) {
249 java.util.Calendar c = java.util.Calendar.getInstance();
250 c.setTime( p_date );
251 return c.getTimeInMillis();
252}
253
254//-----------------获取当前/系统日期(指定日期格式)-----------------------------------------------------------------------------------
255/** *//**
256* 获取指定日期格式当前日期的字符型日期
257* @param p_format 日期格式
258* 格式1:"yyyy-MM-dd"
259* 格式2:"yyyy-MM-dd hh:mm:ss EE"
260* 格式3:"yyyy年MM月dd日 hh:mm:ss EE"
261* 说明: 年-月-日 时:分:秒 星期 注意MM/mm大小写
262* @return String 当前时间字符串
263* @author zhuqx
264* @Date: 2006-10-31
265*/
266public static String getNowOfDateByFormat( String p_format ) {
267 Date d = new Date();
268 SimpleDateFormat sdf = new SimpleDateFormat( p_format );
269 String dateStr = sdf.format( d );
270 return dateStr;
271}
272
273/** *//**
274* 获取指定日期格式系统日期的字符型日期
275* @param p_format 日期格式
276* 格式1:"yyyy-MM-dd"
277* 格式2:"yyyy-MM-dd hh:mm:ss EE"
278* 格式3:"yyyy年MM月dd日 hh:mm:ss EE"
279* 说明: 年-月-日 时:分:秒 星期 注意MM/mm大小写
280* @return String 系统时间字符串
281* @author zhuqx
282* @Date: 2006-10-31
283*/
284public static String getSystemOfDateByFormat( String p_format ) {
285 long time = System.currentTimeMillis();
286 Date d2 = new Date();
287 Date d = new Date( time );
288 SimpleDateFormat sdf = new SimpleDateFormat( p_format );
289 String dateStr = sdf.format( d );
290 return dateStr;
291}
292
293/** *//**
294* 获取字符日期一个月的天数
295* @param p_date
296* @return 天数
297* @author zhuqx
298*/
299public static long getDayOfMonth( Date p_date ) throws ParseException {
300 int year = getYearOfDate(p_date);
301 int month = getMonthOfDate( p_date )-1;
302 int day = getDayOfDate( p_date );
303 int hour = getHourOfDate( p_date );
304 int minute = getMinuteOfDate( p_date );
305 int second = getSecondOfDate( p_date );
306 Calendar l_calendar = new GregorianCalendar(year,month,day,hour,minute,second);
307 return l_calendar.getActualMaximum( l_calendar.DAY_OF_MONTH );
308}
309
310// -----------------获取指定月份的第一天,最后一天 ---------------------------------------------------------------------------
311/** *//**
312* 获取指定月份的第一天
313* @param p_strDate 指定月份
314* @param p_formate 日期格式
315* @return String 时间字符串
316* @author zhuqx
317* @Date: 2006-10-31
318*/
319public static String getDateOfMonthBegin( String p_strDate, String p_format ) throws ParseException {
320 java.util.Date date = toUtilDateFromStrDateByFormat( p_strDate,p_format );
321 return toStrDateFromUtilDateByFormat( date,"yyyy-MM" ) + "-01";
322}
323
324/** *//**
325* 获取指定月份的最后一天
326* @param p_strDate 指定月份
327* @param p_formate 日期格式
328* @return String 时间字符串
329* @author zhuqx
330* @Date: 2006-10-31
331*/
332public static String getDateOfMonthEnd( String p_strDate, String p_format ) throws ParseException {
333 java.util.Date date = toUtilDateFromStrDateByFormat( getDateOfMonthBegin( p_strDate,p_format ),p_format );
334 Calendar calendar = Calendar.getInstance();
335 calendar.setTime( date );
336 calendar.add( Calendar.MONTH,1 );
337 calendar.add( Calendar.DAY_OF_YEAR,-1 );
338 return toStrDateFromUtilDateByFormat( calendar.getTime(),p_format );
339}
340
341}package com.aimtime.financing.service.util;import java.text.ParseException;
342import java.text.SimpleDateFormat;
343import java.util.Calendar;
344import java.util.Date;
345import java.util.GregorianCalendar;import org.apache.log4j.Logger;/** *//**
346* @Functionality: 有关日期工具类
347*/
348public class DateUtil extends TimeUtil {
349/** *//**
350* Logger for this class
351*/
352private static final Logger logger = Logger.getLogger( DateUtil.class );
353
354/** *//** 日期转化 */
355private static final SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd" );
356
357/** *//**
358* @Functionality: 构造函数
359*/
360public DateUtil() {}
361
362//----------------------日期计算---------------------------------------------------------------------------------
363
364/** *//**
365* 是否开始日期在结束日期之前(不包括相等)
366* @param p_startDate
367* @param p_endDate
368* @return boolean 在结束日期前:ture;否则:false
369* @author zhuqx
370* @Date: 2006-10-31
371*/
372public static boolean isStartDateBeforeEndDate( Date p_startDate, Date p_endDate ) throws ParseException {
373 long l_startTime = getMillisOfDate( p_startDate );
374 long l_endTime = getMillisOfDate( p_endDate );
375 return ( l_startTime - l_endTime > (long) 0 ) ? true : false;
376}
377
378/** *//**
379* 获取2个字符日期的天数差
380* @param p_startDate
381* @param p_endDate
382* @return 天数差
383* @author zhuqx
384* @Date: 2006-10-31
385*/
386public static long getDaysOfTowDiffDate( String p_startDate, String p_endDate ) throws ParseException {
387
388 Date l_startDate = toUtilDateFromStrDateByFormat( p_startDate,"yyyy-MM-dd");
389 Date l_endDate = toUtilDateFromStrDateByFormat( p_endDate, "yyyy-MM-dd");
390 long l_startTime = getMillisOfDate( l_startDate );
391 long l_endTime = getMillisOfDate( l_endDate );
392 long betweenDays = (long) ( ( l_endTime - l_startTime ) / ( 1000 * 60 * 60 * 24 ) );
393 return betweenDays;
394}
395
396/** *//**
397* 获取2个字符日期的周数差
398* @param p_startDate
399* @param p_endDate
400* @return 周数差
401* @author zhuqx
402* @Date: 2006-10-31
403*/
404public static long getWeeksOfTowDiffDate( String p_startDate, String p_endDate ) throws ParseException {
405 return getDaysOfTowDiffDate(p_startDate,p_endDate)/7;
406}
407
408/** *//**
409* 获取2个字符日期的月数差
410* @param p_startDate
411* @param p_endDate
412* @return 月数差
413* @author zhuqx
414* @Date: 2006-10-31
415*/
416public static long getMonthsOfTowDiffDate( String p_startDate, String p_endDate ) throws ParseException {
417 return getDaysOfTowDiffDate(p_startDate,p_endDate)/30;
418}
419/** *//**
420* 获取2个字符日期的年数差
421* @param p_startDate
422* @param p_endDate
423* @return 年数差
424* @author zhuqx
425* @Date: 2006-10-31
426*/
427public static long getYearsOfTowDiffDate( String p_startDate, String p_endDate ) throws ParseException {
428 return getDaysOfTowDiffDate(p_startDate,p_endDate)/365;
429}
430
431/** *//**
432* 在给定的日期基础上添加年,月,日、时,分,秒
433* 例如要再2006-10-21(uitl日期)添加3个月,并且格式化为yyyy-MM-dd格式,
434* 这里调用的方式为 addDate(2006-10-21,3,Calendar.MONTH,"yyyy-MM-dd")
435* @param p_startDate 给定的日期
436* @param p_count 时间的数量
437* @param p_field 添加的域
438* @param p_format 时间转化格式,例如:yyyy-MM-dd hh:mm:ss 或者yyyy-mm-dd等
439* @return 添加后格式化的时间
440* @Date: 2006-10-31
441*/
442public static String addDate(Date p_startDate,int p_count,int p_field,String p_format)throws ParseException {
443
444 //年,月,日、时,分,秒
445 int l_year = getYearOfDate(p_startDate);
446 int l_month = getMonthOfDate( p_startDate )-1;
447 int l_day = getDayOfDate( p_startDate );
448 int l_hour = getHourOfDate( p_startDate );
449 int l_minute = getMinuteOfDate( p_startDate );
450 int l_second = getSecondOfDate( p_startDate );
451 Calendar l_calendar = new GregorianCalendar(l_year,l_month,l_day,l_hour,l_minute,l_second);
452 l_calendar.add(p_field,p_count);
453 return toStrDateFromUtilDateByFormat(l_calendar.getTime(),p_format);
454}
455
456/** *//**
457* 判断给定日期是不是润年
458* @param p_date 给定日期
459* @return boolean 如果给定的年份为闰年,则返回 true;否则返回 false。
460* @Date: 2006-10-31
461*/
462 public static boolean isLeapYear(Date p_date) {
463 int l_year = getYearOfDate( p_date );
464 GregorianCalendar l_calendar = new GregorianCalendar();
465 return l_calendar.isLeapYear( l_year );
466 }
467
468}package com.aimtime.financing.service.util;import java.text.ParseException;
469import java.util.Calendar;
470import java.util.Date;import junit.framework.TestCase;import org.apache.log4j.Logger;public class DateUtilTest extends TestCase {
471/** *//**
472* Logger for this class
473*/
474private static final Logger logger = Logger.getLogger( DateUtilTest.class );
475
476DateUtil dateUtil;
477protected void setUp() throws Exception {
478 logger.debug( "setUp() - start" );
479
480 super.setUp();
481 dateUtil = new DateUtil();
482
483 logger.debug( "setUp() - end" );
484}
485
486protected void tearDown() throws Exception {
487 logger.debug( "tearDown() - start" );
488
489 super.tearDown();
490
491 logger.debug( "tearDown() - end" );
492}
493
494/** *//**
495* 获取2个字符日期的天数差
496* @param p_startDate
497* @param p_endDate
498* @return 天数差
499* @author zhuqx
500*/
501public void testGetDayOfTowDiffDate() throws ParseException {
502 logger.debug( "testGetDayOfTowDiffDate() - start" );
503
504 String startDate = "2005-05-01";
505 String endDate = "2006-09-30";
506 long day = dateUtil.getDaysOfTowDiffDate( startDate,endDate );
507 logger.debug( "day=========" + day);
508 logger.debug( "week=========" + day/7);
509 logger.debug( "month=========" + day/30);
510 logger.debug( "year=========" + day/365);
511 logger.debug( "testGetDayOfTowDiffDate() - end" );
512}
513/** *//**
514* 获取字符日期一个月的天数
515* @param p_date
516* @return 天数
517* @author zhuqx
518*/
519public void atestGetDayOfMonth() throws ParseException {
520 logger.debug( "testGetDayOfTowDiffDate() - start" );
521
522 String l_date = "2006-02-01";
523 String l_format = "yyyy-MM-dd";
524 long day = dateUtil.getDayOfMonth( dateUtil.toUtilDateFromStrDateByFormat( l_date,l_format ) );
525 logger.debug( "day=========" + day);
526 logger.debug( "testGetDayOfTowDiffDate() - end" );
527}
528
529//-------------------------------日期转换---------------------------------------------------------------------------
530/** *//**
531* 字符串型转化util.Date
532* @Param: p_strDate 字符串型日期
533* @Return: java.util.Date util.Date
534* @Throws: ParseException
535* @Author: zhuqx
536* @Date: 2006-10-31
537*/
538public void atestToUtilDateByFormat() throws ParseException {
539 logger.debug( "testGetDayOfTowDiffDate() - start" );
540
541 String l_date = "2005-05-01";
542 Date day = dateUtil.toUtilDateFromStrDateByFormat( l_date,"yyyy-MM-dd" );
543 logger.debug( "java.util.Date =========" + day);
544
545 logger.debug( "testGetDayOfTowDiffDate() - end" );
546}
547/** *//**
548* 字符型日期转化成sql.Date型日期
549* @param p_strDate 字符型日期
550* @return java.sql.Date sql.Date型日期
551* @throws ParseException
552* @author shizhuoyang
553*/
554public void atestToSqlDatet() throws ParseException {
555 logger.debug( "testToSqlDatet() - start" );
556
557 String l_date = "2005-05-01";
558 Date day = dateUtil.toSqlDateFromStrDate( l_date );
559 logger.debug( "java.sql.Date=========" + day);
560
561 logger.debug( "testToSqlDatet() - end" );
562}
563/** *//**
564* util.Date型日期转化指定的格式字符串型
565* @param p_date Date
566* @param p_format String
567* 格式:"yyyy-MM-dd" / "yyyy-MM-dd hh:mm:ss EE" 年-月-日 时:分:秒 星期 注意MM/mm大小写
568* @return String
569* @Author: zhuqx
570* @Date: 2006-10-31
571*/
572public void atestToStrDateByFormat() throws ParseException {
573 logger.debug( "testToStrDateByFormat() - start" );
574
575 java.util.Date l_date = new java.util.Date();
576 String day = dateUtil.toStrDateFromUtilDateByFormat( l_date,"yyyy-MM-dd" );
577 String day2 = dateUtil.toStrDateFromUtilDateByFormat( l_date,"yyyy-MM-dd hh:mm:ss EE" );
578 logger.debug( "string-Date-yyyy-MM-dd=========" + day);
579 logger.debug( "string-Date-yyyy-MM-dd hh:mm:ss=========" + day2);
580
581 logger.debug( "testToStrDateByFormat() - end" );
582}
583/** *//**
584* util.Date型日期转化sql.Date型日期
585* @Param: p_utilDate util.Date型日期
586* @Return: java.sql.Date sql.Date型日期
587* @Author: zhuqx
588* @Date: 2006-10-31
589*/
590public void atestToSqlDateFromUtilDate() throws ParseException {
591 logger.debug( "testToStrDateByFormat() - start" );
592
593 java.util.Date l_date = new java.util.Date();
594 java.sql.Date day = dateUtil.toSqlDateFromUtilDate( l_date);
595 logger.debug( "java.sql.Date-=========" + day);
596
597 logger.debug( "testToStrDateByFormat() - end" );
598}
599/** *//**
600* sql.Date型日期转化util.Date型日期
601* @Param: sqlDate sql.Date型日期
602* @Return: java.util.Date util.Date型日期
603* @Author: zhuqx
604* @Date: 2006-10-31
605*/
606public void atestToUtilDateFromSqlDate() throws ParseException {
607 logger.debug( "testToStrDateByFormat() - start" );
608
609 java.sql.Date l_date = dateUtil.toSqlDateFromStrDate("2005-05-01");
610 java.util.Date date = dateUtil.toUtilDateFromSqlDate( l_date);
611 logger.debug( "java.util.Date-=========" + date);
612
613 logger.debug( "testToStrDateByFormat() - end" );
614}
615
616//-----------------获取日期(各种日期格式)-----------------------------------------------------------------------------------
617/** *//**
618* 获取当前日期的字符化处理
619* @param p_format 日期格式
620* @return String 当前时间字符串
621* @author zhuqx
622* @Date: 2006-10-31
623*/
624public void atestGetNowOfDateByFormat() throws ParseException {
625 logger.debug( "testGetNowOfDate() - start" );
626 //yyyy年MM月dd日 hh:mm:ss EE
627 String date = dateUtil.getNowOfDateByFormat( "yyyyMM" );
628 logger.debug( "java.util.Date-=========" + date);
629
630 logger.debug( "testGetNowOfDate() - end" );
631}
632
633/** *//**
634* 获取指定日期格式系统日期的字符型日期
635* @param p_format 日期格式
636* 格式1:"yyyy-MM-dd"
637* 格式2:"yyyy-MM-dd hh:mm:ss EE"
638* 格式3:"yyyy年MM月dd日 hh:mm:ss EE"
639* 说明: 年-月-日 时:分:秒 星期 注意MM/mm大小写
640* @return String 系统时间字符串
641* @author zhuqx
642* @Date: 2006-10-31
643*/
644public void atestGetSystemOfDateByFormat() throws ParseException {
645 logger.debug( "testGetSystemOfDateByFormat() - start" );
646 //yyyy年MM月dd日 hh:mm:ss EE
647 String date = dateUtil.getSystemOfDateByFormat( "yyyyMM" );
648 logger.debug( "java.util.Date-=========" + date);
649
650 logger.debug( "testGetSystemOfDateByFormat() - end" );
651}
652
653/** *//**
654* 获取指定月份的第一天
655* @param p_strdate 指定月份
656* @param p_formate 日期格式
657* @return String 时间字符串
658* @author zhuqx
659* @Date: 2006-10-31
660*/
661public void atestGetMonthBegin() throws ParseException {
662 logger.debug( "testGetMonthBegin() - start" );
663 //yyyy年MM月dd日 hh:mm:ss EE
664 String l_strDate = "2005-09-11";
665 String l_formate = "yyyy-MM-dd";
666 String date = dateUtil.getDateOfMonthBegin( l_strDate,l_formate );
667 logger.debug( "java.util.Date-=========" + date);
668
669 logger.debug( "testGetMonthBegin() - end" );
670}
671
672/** *//**
673* 取得指定月份的最后一天
674* @param p_strDate 指定月份
675* @param p_formate 日期格式
676* @return String 时间字符串
677* @author zhuqx
678* @Date: 2006-10-31
679*/
680public void atestGetMonthEnd() throws ParseException {
681 logger.debug( "testGetMonthBegin() - start" );
682 //yyyy年MM月dd日 hh:mm:ss EE
683 String l_strDate = "2006-02-11";
684 String l_formate = "yyyy-MM-dd";
685 String date = dateUtil.getDateOfMonthEnd( l_strDate,l_formate );
686 logger.debug( "java.util.Date-=========" + date);
687
688 logger.debug( "testGetMonthBegin() - end" );
689}
690
691/** *//**
692* 获取指定日期的年份,月份,日份,小时,分,秒,毫秒
693* @param p_date util.Date日期
694* @return int 年份
695* @author zhuqx
696* @Date: 2006-10-31
697*/
698public void atestGetYearOfDate() throws ParseException {
699 logger.debug( "testGetMonthBegin() - start" );
700 //yyyy年MM月dd日 hh:mm:ss EE
701 String l_strDate = "2004-02-11 08:25:15";
702 String l_format = "yyyy-MM-dd hh:mm:ss";
703 int year = dateUtil.getYearOfDate( dateUtil.toUtilDateFromStrDateByFormat( l_strDate,l_format ));
704 int month = dateUtil.getMonthOfDate( dateUtil.toUtilDateFromStrDateByFormat( l_strDate,l_format ));
705 int day = dateUtil.getDayOfDate( dateUtil.toUtilDateFromStrDateByFormat( l_strDate,l_format ));
706 int hour = dateUtil.getHourOfDate( dateUtil.toUtilDateFromStrDateByFormat( l_strDate,l_format ));
707 int minute = dateUtil.getMinuteOfDate( dateUtil.toUtilDateFromStrDateByFormat( l_strDate,l_format ));
708 int second = dateUtil.getSecondOfDate( dateUtil.toUtilDateFromStrDateByFormat( l_strDate,l_format ));
709 long millis = dateUtil.getMillisOfDate( dateUtil.toUtilDateFromStrDateByFormat( l_strDate,l_format ));
710
711 logger.debug( "year==========" + year);
712 logger.debug( "month==========" + month);
713 logger.debug( "day==========" + day);
714 logger.debug( "hour==========" + hour);
715 logger.debug( "minute==========" + minute);
716 logger.debug( "second==========" + second);
717 logger.debug( "millis==========" + millis);
718
719 logger.debug( "testGetMonthBegin() - end" );
720}
721
722/** *//**
723* 是否开始日期在结束日期之前
724* @param p_startDate
725* @param p_endDate
726* @return boolean 在结束日期前:ture;否则:false
727* @author zhuqx
728*/
729public void atestIsStartDateBeforeEndDate() throws ParseException {
730 Date l_startDate = dateUtil.toUtilDateFromStrDateByFormat( "2005-02-11","yyyy-MM-dd" );
731 Date l_endDate = dateUtil.toUtilDateFromStrDateByFormat( "2005-02-11","yyyy-MM-dd" );
732 boolean isBofore = dateUtil.isStartDateBeforeEndDate(l_startDate,l_endDate );
733 logger.debug( "isBofore=="+ isBofore);
734}
735
736/** *//**
737* 在当前的时间基础上添加月、天、或者其他
738* 例如添加3个月,并且格式化为yyyy-MM-dd格式,
739* 这里调用的方式为addMonth(3,Calendar.MONTH,"yyyy-MM-dd")
740* @param p_count 时间的数量
741* @param p_field 添加的域
742* @param p_format 时间转化格式,例如:yyyy-MM-dd hh:mm:ss 或者yyyy-mm-dd等
743* @return 添加后格式化的时间
744* @Date: 2006-10-31
745*/
746public void atestAddDate() throws ParseException {
747 Date l_startDate = dateUtil.toUtilDateFromStrDateByFormat( "2006-02-27 07:59:59","yyyy-MM-dd hh:mm:ss" );
748 int l_count = 2;
749// int l_field = Calendar.YEAR;
750// int l_field = Calendar.MONTH;
751 int l_field = Calendar.DATE;
752// int l_field = Calendar.HOUR;
753// int l_field = Calendar.MINUTE;
754// int l_field = Calendar.SECOND;
755 String l_format = "yyyy-MM-dd hh:mm:ss";
756 String date = this.dateUtil.addDate( l_startDate,l_count,l_field,l_format );
757 logger.debug( "addDate============"+date );
758}
759
760/** *//**
761* 判断给定日期是不是润年
762* @param p_date 给定日期
763* @return boolean 如果给定的年份为闰年,则返回 true;否则返回 false。
764* @Date: 2006-10-31
765*/
766public void atestIsLeapYear() throws ParseException {
767
768 Date l_date = dateUtil.toUtilDateFromStrDateByFormat( "2000-01-25","yyyy-MM-dd" );
769 boolean isLeap = dateUtil.isLeapYear( l_date );
770 logger.debug( "isLeapYear="+ isLeap );
771}
772
773}
2* 有关日期工具类(extends TimeUtil)
3*
4* TimeUtil主要 功能有:
5* 1.各种日期类型(字符,util.Date, sql.Date,Calendar等)转换
6* 2.获取指定日期的年份,月份,日份,小时,分,秒,毫秒
7* 3.获取当前/系统日期(指定日期格式)
8* 4.获取字符日期一个月的天数
9* 5.获取指定月份的第一天,最后一天
10*
11* DateUtil主要功能有:
12* 1.日期比较
13* 2.获取2个字符日期的天数差,周数差,月数差,年数差
14* 3.日期添加
15* 4.判断给定日期是不是润年
16*/package com.aimtime.financing.service.util;
17import java.util.Calendar;
18import java.util.Date;
19import java.util.GregorianCalendar;
20import java.text.*;public abstract class TimeUtil {
21
22//---当前日期的年,月,日,时,分,秒
23public static Calendar now = Calendar.getInstance();
24int year = now.get( Calendar.YEAR );
25int date = now.get( Calendar.DAY_OF_MONTH );
26int month = now.get( Calendar.MONTH ) + 1;
27int hour = now.get( Calendar.HOUR );
28int min = now.get( Calendar.MINUTE );
29int sec = now.get( Calendar.SECOND );
30
31//-------------------------------日期类型转换---------------------------------------------------------------------------
32/** *//**
33* 字符型日期转化util.Date型日期
34* @Param:p_strDate 字符型日期
35* @param p_format 格式:"yyyy-MM-dd" / "yyyy-MM-dd hh:mm:ss"
36* @Return:java.util.Date util.Date型日期
37* @Throws: ParseException
38* @Author: zhuqx
39* @Date: 2006-10-31
40*/
41public static java.util.Date toUtilDateFromStrDateByFormat( String p_strDate, String p_format )
42 throws ParseException {
43 java.util.Date l_date = null;
44 java.text.DateFormat df = new java.text.SimpleDateFormat( p_format );
45 if ( p_strDate != null && ( !"".equals( p_strDate ) ) && p_format != null && ( !"".equals( p_format ) ) ) {
46 l_date = df.parse( p_strDate );
47 }
48 return l_date;
49}
50
51/** *//**
52* 字符型日期转化成sql.Date型日期
53* @param p_strDate 字符型日期
54* @return java.sql.Date sql.Date型日期
55* @throws ParseException
56* @Author: zhuqx
57* @Date: 2006-10-31
58*/
59public static java.sql.Date toSqlDateFromStrDate( String p_strDate ) throws ParseException {
60 java.sql.Date returnDate = null;
61 java.text.DateFormat sdf = new java.text.SimpleDateFormat();
62 if ( p_strDate != null && ( !"".equals( p_strDate ) ) ) {
63 returnDate = new java.sql.Date( sdf.parse( p_strDate ).getTime() );
64 }
65 return returnDate;
66}
67
68/** *//**
69* util.Date型日期转化指定格式的字符串型日期
70* @param p_date Date
71* @param p_format String
72* 格式1:"yyyy-MM-dd"
73* 格式2:"yyyy-MM-dd hh:mm:ss EE"
74* 格式3:"yyyy年MM月dd日 hh:mm:ss EE"
75* 说明: 年-月-日 时:分:秒 星期 注意MM/mm大小写
76* @return String
77* @Author: zhuqx
78* @Date: 2006-10-31
79*/
80public static String toStrDateFromUtilDateByFormat( java.util.Date p_utilDate, String p_format ) throws ParseException {
81 String l_result = "";
82 if ( p_utilDate != null ) {
83 SimpleDateFormat sdf = new SimpleDateFormat( p_format );
84 l_result = sdf.format( p_utilDate );
85 }
86 return l_result;
87}
88
89/** *//**
90* util.Date型日期转化转化成Calendar日期
91* @param p_utilDate Date
92* @return Calendar
93* @Author: zhuqx
94* @Date: 2006-10-31
95*/
96public static Calendar toCalendarFromUtilDate(java.util.Date p_utilDate) {
97 Calendar c = Calendar.getInstance();
98 c.setTime(p_utilDate);
99 return c;
100}
101
102/** *//**
103* util.Date型日期转化sql.Date(年月日)型日期
104* @Param: p_utilDate util.Date型日期
105* @Return: java.sql.Date sql.Date型日期
106* @Author: zhuqx
107* @Date: 2006-10-31
108*/
109public static java.sql.Date toSqlDateFromUtilDate( java.util.Date p_utilDate ) {
110 java.sql.Date returnDate = null;
111 if ( p_utilDate != null ) {
112 returnDate = new java.sql.Date( p_utilDate.getTime() );
113 }
114 return returnDate;
115}
116
117/** *//**
118* util.Date型日期转化sql.Time(时分秒)型日期
119* @Param: p_utilDate util.Date型日期
120* @Return: java.sql.Time sql.Time型日期
121* @Author: zhuqx
122* @Date: 2006-10-31
123*/
124public static java.sql.Time toSqlTimeFromUtilDate( java.util.Date p_utilDate ) {
125 java.sql.Time returnDate = null;
126 if ( p_utilDate != null ) {
127 returnDate = new java.sql.Time( p_utilDate.getTime() );
128 }
129 return returnDate;
130}
131
132/** *//**
133* util.Date型日期转化sql.Date(时分秒)型日期
134* @Param: p_utilDate util.Date型日期
135* @Return: java.sql.Timestamp sql.Timestamp型日期
136* @Author: zhuqx
137* @Date: 2006-10-31
138*/
139public static java.sql.Timestamp toSqlTimestampFromUtilDate( java.util.Date p_utilDate ) {
140 java.sql.Timestamp returnDate = null;
141 if ( p_utilDate != null ) {
142 returnDate = new java.sql.Timestamp( p_utilDate.getTime() );
143 }
144 return returnDate;
145}
146
147/** *//**
148* sql.Date型日期转化util.Date型日期
149* @Param: sqlDate sql.Date型日期
150* @Return: java.util.Date util.Date型日期
151* @Author: zhuqx
152* @Date: 2006-10-31
153*/
154public static java.util.Date toUtilDateFromSqlDate( java.sql.Date p_sqlDate ) {
155 java.util.Date returnDate = null;
156 if ( p_sqlDate != null ) {
157 returnDate = new java.util.Date( p_sqlDate.getTime() );
158 }
159 return returnDate;
160}
161
162//-----------------获取指定日期的年份,月份,日份,小时,分,秒,毫秒----------------------------
163/** *//**
164* 获取指定日期的年份
165* @param p_date util.Date日期
166* @return int 年份
167* @author zhuqx
168* @Date: 2006-10-31
169*/
170public static int getYearOfDate( java.util.Date p_date ) {
171 java.util.Calendar c = java.util.Calendar.getInstance();
172 c.setTime( p_date );
173 return c.get( java.util.Calendar.YEAR );
174}
175
176/** *//**
177* 获取指定日期的月份
178* @param p_date util.Date日期
179* @return int 月份
180* @author zhuqx
181* @Date: 2006-10-31
182*/
183public static int getMonthOfDate( java.util.Date p_date ) {
184 java.util.Calendar c = java.util.Calendar.getInstance();
185 c.setTime( p_date );
186 return c.get( java.util.Calendar.MONTH ) + 1;
187}
188
189/** *//**
190* 获取指定日期的日份
191* @param p_date util.Date日期
192* @return int 日份
193* @author zhuqx
194* @Date: 2006-10-31
195*/
196public static int getDayOfDate( java.util.Date p_date ) {
197 java.util.Calendar c = java.util.Calendar.getInstance();
198 c.setTime( p_date );
199 return c.get( java.util.Calendar.DAY_OF_MONTH );
200}
201
202/** *//**
203* 获取指定日期的小时
204* @param p_date util.Date日期
205* @return int 日份
206* @author zhuqx
207* @Date: 2006-10-31
208*/
209public static int getHourOfDate( java.util.Date p_date ) {
210 java.util.Calendar c = java.util.Calendar.getInstance();
211 c.setTime( p_date );
212 return c.get( java.util.Calendar.HOUR_OF_DAY );
213}
214
215/** *//**
216* 获取指定日期的分钟
217* @param p_date util.Date日期
218* @return int 分钟
219* @author zhuqx
220* @Date: 2006-10-31
221*/
222public static int getMinuteOfDate( java.util.Date p_date ) {
223 java.util.Calendar c = java.util.Calendar.getInstance();
224 c.setTime( p_date );
225 return c.get( java.util.Calendar.MINUTE );
226}
227
228/** *//**
229* 获取指定日期的秒钟
230* @param p_date util.Date日期
231* @return int 秒钟
232* @author zhuqx
233* @Date: 2006-10-31
234*/
235public static int getSecondOfDate( java.util.Date p_date ) {
236 java.util.Calendar c = java.util.Calendar.getInstance();
237 c.setTime( p_date );
238 return c.get( java.util.Calendar.SECOND );
239}
240
241/** *//**
242* 获取指定日期的毫秒
243* @param p_date util.Date日期
244* @return long 毫秒
245* @author zhuqx
246* @Date: 2006-10-31
247*/
248public static long getMillisOfDate( java.util.Date p_date ) {
249 java.util.Calendar c = java.util.Calendar.getInstance();
250 c.setTime( p_date );
251 return c.getTimeInMillis();
252}
253
254//-----------------获取当前/系统日期(指定日期格式)-----------------------------------------------------------------------------------
255/** *//**
256* 获取指定日期格式当前日期的字符型日期
257* @param p_format 日期格式
258* 格式1:"yyyy-MM-dd"
259* 格式2:"yyyy-MM-dd hh:mm:ss EE"
260* 格式3:"yyyy年MM月dd日 hh:mm:ss EE"
261* 说明: 年-月-日 时:分:秒 星期 注意MM/mm大小写
262* @return String 当前时间字符串
263* @author zhuqx
264* @Date: 2006-10-31
265*/
266public static String getNowOfDateByFormat( String p_format ) {
267 Date d = new Date();
268 SimpleDateFormat sdf = new SimpleDateFormat( p_format );
269 String dateStr = sdf.format( d );
270 return dateStr;
271}
272
273/** *//**
274* 获取指定日期格式系统日期的字符型日期
275* @param p_format 日期格式
276* 格式1:"yyyy-MM-dd"
277* 格式2:"yyyy-MM-dd hh:mm:ss EE"
278* 格式3:"yyyy年MM月dd日 hh:mm:ss EE"
279* 说明: 年-月-日 时:分:秒 星期 注意MM/mm大小写
280* @return String 系统时间字符串
281* @author zhuqx
282* @Date: 2006-10-31
283*/
284public static String getSystemOfDateByFormat( String p_format ) {
285 long time = System.currentTimeMillis();
286 Date d2 = new Date();
287 Date d = new Date( time );
288 SimpleDateFormat sdf = new SimpleDateFormat( p_format );
289 String dateStr = sdf.format( d );
290 return dateStr;
291}
292
293/** *//**
294* 获取字符日期一个月的天数
295* @param p_date
296* @return 天数
297* @author zhuqx
298*/
299public static long getDayOfMonth( Date p_date ) throws ParseException {
300 int year = getYearOfDate(p_date);
301 int month = getMonthOfDate( p_date )-1;
302 int day = getDayOfDate( p_date );
303 int hour = getHourOfDate( p_date );
304 int minute = getMinuteOfDate( p_date );
305 int second = getSecondOfDate( p_date );
306 Calendar l_calendar = new GregorianCalendar(year,month,day,hour,minute,second);
307 return l_calendar.getActualMaximum( l_calendar.DAY_OF_MONTH );
308}
309
310// -----------------获取指定月份的第一天,最后一天 ---------------------------------------------------------------------------
311/** *//**
312* 获取指定月份的第一天
313* @param p_strDate 指定月份
314* @param p_formate 日期格式
315* @return String 时间字符串
316* @author zhuqx
317* @Date: 2006-10-31
318*/
319public static String getDateOfMonthBegin( String p_strDate, String p_format ) throws ParseException {
320 java.util.Date date = toUtilDateFromStrDateByFormat( p_strDate,p_format );
321 return toStrDateFromUtilDateByFormat( date,"yyyy-MM" ) + "-01";
322}
323
324/** *//**
325* 获取指定月份的最后一天
326* @param p_strDate 指定月份
327* @param p_formate 日期格式
328* @return String 时间字符串
329* @author zhuqx
330* @Date: 2006-10-31
331*/
332public static String getDateOfMonthEnd( String p_strDate, String p_format ) throws ParseException {
333 java.util.Date date = toUtilDateFromStrDateByFormat( getDateOfMonthBegin( p_strDate,p_format ),p_format );
334 Calendar calendar = Calendar.getInstance();
335 calendar.setTime( date );
336 calendar.add( Calendar.MONTH,1 );
337 calendar.add( Calendar.DAY_OF_YEAR,-1 );
338 return toStrDateFromUtilDateByFormat( calendar.getTime(),p_format );
339}
340
341}package com.aimtime.financing.service.util;import java.text.ParseException;
342import java.text.SimpleDateFormat;
343import java.util.Calendar;
344import java.util.Date;
345import java.util.GregorianCalendar;import org.apache.log4j.Logger;/** *//**
346* @Functionality: 有关日期工具类
347*/
348public class DateUtil extends TimeUtil {
349/** *//**
350* Logger for this class
351*/
352private static final Logger logger = Logger.getLogger( DateUtil.class );
353
354/** *//** 日期转化 */
355private static final SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd" );
356
357/** *//**
358* @Functionality: 构造函数
359*/
360public DateUtil() {}
361
362//----------------------日期计算---------------------------------------------------------------------------------
363
364/** *//**
365* 是否开始日期在结束日期之前(不包括相等)
366* @param p_startDate
367* @param p_endDate
368* @return boolean 在结束日期前:ture;否则:false
369* @author zhuqx
370* @Date: 2006-10-31
371*/
372public static boolean isStartDateBeforeEndDate( Date p_startDate, Date p_endDate ) throws ParseException {
373 long l_startTime = getMillisOfDate( p_startDate );
374 long l_endTime = getMillisOfDate( p_endDate );
375 return ( l_startTime - l_endTime > (long) 0 ) ? true : false;
376}
377
378/** *//**
379* 获取2个字符日期的天数差
380* @param p_startDate
381* @param p_endDate
382* @return 天数差
383* @author zhuqx
384* @Date: 2006-10-31
385*/
386public static long getDaysOfTowDiffDate( String p_startDate, String p_endDate ) throws ParseException {
387
388 Date l_startDate = toUtilDateFromStrDateByFormat( p_startDate,"yyyy-MM-dd");
389 Date l_endDate = toUtilDateFromStrDateByFormat( p_endDate, "yyyy-MM-dd");
390 long l_startTime = getMillisOfDate( l_startDate );
391 long l_endTime = getMillisOfDate( l_endDate );
392 long betweenDays = (long) ( ( l_endTime - l_startTime ) / ( 1000 * 60 * 60 * 24 ) );
393 return betweenDays;
394}
395
396/** *//**
397* 获取2个字符日期的周数差
398* @param p_startDate
399* @param p_endDate
400* @return 周数差
401* @author zhuqx
402* @Date: 2006-10-31
403*/
404public static long getWeeksOfTowDiffDate( String p_startDate, String p_endDate ) throws ParseException {
405 return getDaysOfTowDiffDate(p_startDate,p_endDate)/7;
406}
407
408/** *//**
409* 获取2个字符日期的月数差
410* @param p_startDate
411* @param p_endDate
412* @return 月数差
413* @author zhuqx
414* @Date: 2006-10-31
415*/
416public static long getMonthsOfTowDiffDate( String p_startDate, String p_endDate ) throws ParseException {
417 return getDaysOfTowDiffDate(p_startDate,p_endDate)/30;
418}
419/** *//**
420* 获取2个字符日期的年数差
421* @param p_startDate
422* @param p_endDate
423* @return 年数差
424* @author zhuqx
425* @Date: 2006-10-31
426*/
427public static long getYearsOfTowDiffDate( String p_startDate, String p_endDate ) throws ParseException {
428 return getDaysOfTowDiffDate(p_startDate,p_endDate)/365;
429}
430
431/** *//**
432* 在给定的日期基础上添加年,月,日、时,分,秒
433* 例如要再2006-10-21(uitl日期)添加3个月,并且格式化为yyyy-MM-dd格式,
434* 这里调用的方式为 addDate(2006-10-21,3,Calendar.MONTH,"yyyy-MM-dd")
435* @param p_startDate 给定的日期
436* @param p_count 时间的数量
437* @param p_field 添加的域
438* @param p_format 时间转化格式,例如:yyyy-MM-dd hh:mm:ss 或者yyyy-mm-dd等
439* @return 添加后格式化的时间
440* @Date: 2006-10-31
441*/
442public static String addDate(Date p_startDate,int p_count,int p_field,String p_format)throws ParseException {
443
444 //年,月,日、时,分,秒
445 int l_year = getYearOfDate(p_startDate);
446 int l_month = getMonthOfDate( p_startDate )-1;
447 int l_day = getDayOfDate( p_startDate );
448 int l_hour = getHourOfDate( p_startDate );
449 int l_minute = getMinuteOfDate( p_startDate );
450 int l_second = getSecondOfDate( p_startDate );
451 Calendar l_calendar = new GregorianCalendar(l_year,l_month,l_day,l_hour,l_minute,l_second);
452 l_calendar.add(p_field,p_count);
453 return toStrDateFromUtilDateByFormat(l_calendar.getTime(),p_format);
454}
455
456/** *//**
457* 判断给定日期是不是润年
458* @param p_date 给定日期
459* @return boolean 如果给定的年份为闰年,则返回 true;否则返回 false。
460* @Date: 2006-10-31
461*/
462 public static boolean isLeapYear(Date p_date) {
463 int l_year = getYearOfDate( p_date );
464 GregorianCalendar l_calendar = new GregorianCalendar();
465 return l_calendar.isLeapYear( l_year );
466 }
467
468}package com.aimtime.financing.service.util;import java.text.ParseException;
469import java.util.Calendar;
470import java.util.Date;import junit.framework.TestCase;import org.apache.log4j.Logger;public class DateUtilTest extends TestCase {
471/** *//**
472* Logger for this class
473*/
474private static final Logger logger = Logger.getLogger( DateUtilTest.class );
475
476DateUtil dateUtil;
477protected void setUp() throws Exception {
478 logger.debug( "setUp() - start" );
479
480 super.setUp();
481 dateUtil = new DateUtil();
482
483 logger.debug( "setUp() - end" );
484}
485
486protected void tearDown() throws Exception {
487 logger.debug( "tearDown() - start" );
488
489 super.tearDown();
490
491 logger.debug( "tearDown() - end" );
492}
493
494/** *//**
495* 获取2个字符日期的天数差
496* @param p_startDate
497* @param p_endDate
498* @return 天数差
499* @author zhuqx
500*/
501public void testGetDayOfTowDiffDate() throws ParseException {
502 logger.debug( "testGetDayOfTowDiffDate() - start" );
503
504 String startDate = "2005-05-01";
505 String endDate = "2006-09-30";
506 long day = dateUtil.getDaysOfTowDiffDate( startDate,endDate );
507 logger.debug( "day=========" + day);
508 logger.debug( "week=========" + day/7);
509 logger.debug( "month=========" + day/30);
510 logger.debug( "year=========" + day/365);
511 logger.debug( "testGetDayOfTowDiffDate() - end" );
512}
513/** *//**
514* 获取字符日期一个月的天数
515* @param p_date
516* @return 天数
517* @author zhuqx
518*/
519public void atestGetDayOfMonth() throws ParseException {
520 logger.debug( "testGetDayOfTowDiffDate() - start" );
521
522 String l_date = "2006-02-01";
523 String l_format = "yyyy-MM-dd";
524 long day = dateUtil.getDayOfMonth( dateUtil.toUtilDateFromStrDateByFormat( l_date,l_format ) );
525 logger.debug( "day=========" + day);
526 logger.debug( "testGetDayOfTowDiffDate() - end" );
527}
528
529//-------------------------------日期转换---------------------------------------------------------------------------
530/** *//**
531* 字符串型转化util.Date
532* @Param: p_strDate 字符串型日期
533* @Return: java.util.Date util.Date
534* @Throws: ParseException
535* @Author: zhuqx
536* @Date: 2006-10-31
537*/
538public void atestToUtilDateByFormat() throws ParseException {
539 logger.debug( "testGetDayOfTowDiffDate() - start" );
540
541 String l_date = "2005-05-01";
542 Date day = dateUtil.toUtilDateFromStrDateByFormat( l_date,"yyyy-MM-dd" );
543 logger.debug( "java.util.Date =========" + day);
544
545 logger.debug( "testGetDayOfTowDiffDate() - end" );
546}
547/** *//**
548* 字符型日期转化成sql.Date型日期
549* @param p_strDate 字符型日期
550* @return java.sql.Date sql.Date型日期
551* @throws ParseException
552* @author shizhuoyang
553*/
554public void atestToSqlDatet() throws ParseException {
555 logger.debug( "testToSqlDatet() - start" );
556
557 String l_date = "2005-05-01";
558 Date day = dateUtil.toSqlDateFromStrDate( l_date );
559 logger.debug( "java.sql.Date=========" + day);
560
561 logger.debug( "testToSqlDatet() - end" );
562}
563/** *//**
564* util.Date型日期转化指定的格式字符串型
565* @param p_date Date
566* @param p_format String
567* 格式:"yyyy-MM-dd" / "yyyy-MM-dd hh:mm:ss EE" 年-月-日 时:分:秒 星期 注意MM/mm大小写
568* @return String
569* @Author: zhuqx
570* @Date: 2006-10-31
571*/
572public void atestToStrDateByFormat() throws ParseException {
573 logger.debug( "testToStrDateByFormat() - start" );
574
575 java.util.Date l_date = new java.util.Date();
576 String day = dateUtil.toStrDateFromUtilDateByFormat( l_date,"yyyy-MM-dd" );
577 String day2 = dateUtil.toStrDateFromUtilDateByFormat( l_date,"yyyy-MM-dd hh:mm:ss EE" );
578 logger.debug( "string-Date-yyyy-MM-dd=========" + day);
579 logger.debug( "string-Date-yyyy-MM-dd hh:mm:ss=========" + day2);
580
581 logger.debug( "testToStrDateByFormat() - end" );
582}
583/** *//**
584* util.Date型日期转化sql.Date型日期
585* @Param: p_utilDate util.Date型日期
586* @Return: java.sql.Date sql.Date型日期
587* @Author: zhuqx
588* @Date: 2006-10-31
589*/
590public void atestToSqlDateFromUtilDate() throws ParseException {
591 logger.debug( "testToStrDateByFormat() - start" );
592
593 java.util.Date l_date = new java.util.Date();
594 java.sql.Date day = dateUtil.toSqlDateFromUtilDate( l_date);
595 logger.debug( "java.sql.Date-=========" + day);
596
597 logger.debug( "testToStrDateByFormat() - end" );
598}
599/** *//**
600* sql.Date型日期转化util.Date型日期
601* @Param: sqlDate sql.Date型日期
602* @Return: java.util.Date util.Date型日期
603* @Author: zhuqx
604* @Date: 2006-10-31
605*/
606public void atestToUtilDateFromSqlDate() throws ParseException {
607 logger.debug( "testToStrDateByFormat() - start" );
608
609 java.sql.Date l_date = dateUtil.toSqlDateFromStrDate("2005-05-01");
610 java.util.Date date = dateUtil.toUtilDateFromSqlDate( l_date);
611 logger.debug( "java.util.Date-=========" + date);
612
613 logger.debug( "testToStrDateByFormat() - end" );
614}
615
616//-----------------获取日期(各种日期格式)-----------------------------------------------------------------------------------
617/** *//**
618* 获取当前日期的字符化处理
619* @param p_format 日期格式
620* @return String 当前时间字符串
621* @author zhuqx
622* @Date: 2006-10-31
623*/
624public void atestGetNowOfDateByFormat() throws ParseException {
625 logger.debug( "testGetNowOfDate() - start" );
626 //yyyy年MM月dd日 hh:mm:ss EE
627 String date = dateUtil.getNowOfDateByFormat( "yyyyMM" );
628 logger.debug( "java.util.Date-=========" + date);
629
630 logger.debug( "testGetNowOfDate() - end" );
631}
632
633/** *//**
634* 获取指定日期格式系统日期的字符型日期
635* @param p_format 日期格式
636* 格式1:"yyyy-MM-dd"
637* 格式2:"yyyy-MM-dd hh:mm:ss EE"
638* 格式3:"yyyy年MM月dd日 hh:mm:ss EE"
639* 说明: 年-月-日 时:分:秒 星期 注意MM/mm大小写
640* @return String 系统时间字符串
641* @author zhuqx
642* @Date: 2006-10-31
643*/
644public void atestGetSystemOfDateByFormat() throws ParseException {
645 logger.debug( "testGetSystemOfDateByFormat() - start" );
646 //yyyy年MM月dd日 hh:mm:ss EE
647 String date = dateUtil.getSystemOfDateByFormat( "yyyyMM" );
648 logger.debug( "java.util.Date-=========" + date);
649
650 logger.debug( "testGetSystemOfDateByFormat() - end" );
651}
652
653/** *//**
654* 获取指定月份的第一天
655* @param p_strdate 指定月份
656* @param p_formate 日期格式
657* @return String 时间字符串
658* @author zhuqx
659* @Date: 2006-10-31
660*/
661public void atestGetMonthBegin() throws ParseException {
662 logger.debug( "testGetMonthBegin() - start" );
663 //yyyy年MM月dd日 hh:mm:ss EE
664 String l_strDate = "2005-09-11";
665 String l_formate = "yyyy-MM-dd";
666 String date = dateUtil.getDateOfMonthBegin( l_strDate,l_formate );
667 logger.debug( "java.util.Date-=========" + date);
668
669 logger.debug( "testGetMonthBegin() - end" );
670}
671
672/** *//**
673* 取得指定月份的最后一天
674* @param p_strDate 指定月份
675* @param p_formate 日期格式
676* @return String 时间字符串
677* @author zhuqx
678* @Date: 2006-10-31
679*/
680public void atestGetMonthEnd() throws ParseException {
681 logger.debug( "testGetMonthBegin() - start" );
682 //yyyy年MM月dd日 hh:mm:ss EE
683 String l_strDate = "2006-02-11";
684 String l_formate = "yyyy-MM-dd";
685 String date = dateUtil.getDateOfMonthEnd( l_strDate,l_formate );
686 logger.debug( "java.util.Date-=========" + date);
687
688 logger.debug( "testGetMonthBegin() - end" );
689}
690
691/** *//**
692* 获取指定日期的年份,月份,日份,小时,分,秒,毫秒
693* @param p_date util.Date日期
694* @return int 年份
695* @author zhuqx
696* @Date: 2006-10-31
697*/
698public void atestGetYearOfDate() throws ParseException {
699 logger.debug( "testGetMonthBegin() - start" );
700 //yyyy年MM月dd日 hh:mm:ss EE
701 String l_strDate = "2004-02-11 08:25:15";
702 String l_format = "yyyy-MM-dd hh:mm:ss";
703 int year = dateUtil.getYearOfDate( dateUtil.toUtilDateFromStrDateByFormat( l_strDate,l_format ));
704 int month = dateUtil.getMonthOfDate( dateUtil.toUtilDateFromStrDateByFormat( l_strDate,l_format ));
705 int day = dateUtil.getDayOfDate( dateUtil.toUtilDateFromStrDateByFormat( l_strDate,l_format ));
706 int hour = dateUtil.getHourOfDate( dateUtil.toUtilDateFromStrDateByFormat( l_strDate,l_format ));
707 int minute = dateUtil.getMinuteOfDate( dateUtil.toUtilDateFromStrDateByFormat( l_strDate,l_format ));
708 int second = dateUtil.getSecondOfDate( dateUtil.toUtilDateFromStrDateByFormat( l_strDate,l_format ));
709 long millis = dateUtil.getMillisOfDate( dateUtil.toUtilDateFromStrDateByFormat( l_strDate,l_format ));
710
711 logger.debug( "year==========" + year);
712 logger.debug( "month==========" + month);
713 logger.debug( "day==========" + day);
714 logger.debug( "hour==========" + hour);
715 logger.debug( "minute==========" + minute);
716 logger.debug( "second==========" + second);
717 logger.debug( "millis==========" + millis);
718
719 logger.debug( "testGetMonthBegin() - end" );
720}
721
722/** *//**
723* 是否开始日期在结束日期之前
724* @param p_startDate
725* @param p_endDate
726* @return boolean 在结束日期前:ture;否则:false
727* @author zhuqx
728*/
729public void atestIsStartDateBeforeEndDate() throws ParseException {
730 Date l_startDate = dateUtil.toUtilDateFromStrDateByFormat( "2005-02-11","yyyy-MM-dd" );
731 Date l_endDate = dateUtil.toUtilDateFromStrDateByFormat( "2005-02-11","yyyy-MM-dd" );
732 boolean isBofore = dateUtil.isStartDateBeforeEndDate(l_startDate,l_endDate );
733 logger.debug( "isBofore=="+ isBofore);
734}
735
736/** *//**
737* 在当前的时间基础上添加月、天、或者其他
738* 例如添加3个月,并且格式化为yyyy-MM-dd格式,
739* 这里调用的方式为addMonth(3,Calendar.MONTH,"yyyy-MM-dd")
740* @param p_count 时间的数量
741* @param p_field 添加的域
742* @param p_format 时间转化格式,例如:yyyy-MM-dd hh:mm:ss 或者yyyy-mm-dd等
743* @return 添加后格式化的时间
744* @Date: 2006-10-31
745*/
746public void atestAddDate() throws ParseException {
747 Date l_startDate = dateUtil.toUtilDateFromStrDateByFormat( "2006-02-27 07:59:59","yyyy-MM-dd hh:mm:ss" );
748 int l_count = 2;
749// int l_field = Calendar.YEAR;
750// int l_field = Calendar.MONTH;
751 int l_field = Calendar.DATE;
752// int l_field = Calendar.HOUR;
753// int l_field = Calendar.MINUTE;
754// int l_field = Calendar.SECOND;
755 String l_format = "yyyy-MM-dd hh:mm:ss";
756 String date = this.dateUtil.addDate( l_startDate,l_count,l_field,l_format );
757 logger.debug( "addDate============"+date );
758}
759
760/** *//**
761* 判断给定日期是不是润年
762* @param p_date 给定日期
763* @return boolean 如果给定的年份为闰年,则返回 true;否则返回 false。
764* @Date: 2006-10-31
765*/
766public void atestIsLeapYear() throws ParseException {
767
768 Date l_date = dateUtil.toUtilDateFromStrDateByFormat( "2000-01-25","yyyy-MM-dd" );
769 boolean isLeap = dateUtil.isLeapYear( l_date );
770 logger.debug( "isLeapYear="+ isLeap );
771}
772
773}