java时间处理 转至:http://abushuia.javaeye.com/blog/145945

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

你可能感兴趣的:(java时间处理 转至:http://abushuia.javaeye.com/blog/145945)