日期工具类

/* 
有关日期工具类(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); 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值