有关日期工具类(extends TimeUtil)
TimeUtil主要功能有:
1.各种日期类型(字符,util.Date,sql.Date,Calendar等)转换
2.获取指定日期的年份,月份,日份,小时,分,秒,毫秒
3.获取当前/系统日期(指定日期格式)
4.获取字符日期一个月的天数
5.获取指定月份的第一天,最后一天
DateUtil主要功能有:
1.日期比较
2.获取2个字符日期的天数差,周数差,月数差,年数差
3.日期添加
4.判断给定日期是不是润年
TimeUtil.java:
package net.hlj.integralshop.util; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.text.*; /** * 1.各种日期类型(字符,util.Date,sql.Date,Calendar等)转换 2.获取指定日期的年份,月份,日份,小时,分,秒,毫秒 3.获取当前/系统日期(指定日期格式) 4.获取字符日期一个月的天数 5.获取指定月份的第一天,最后一天 */ 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: apple @Date: 2010-11-3 */ 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:apple @Date: 2010-11-3 */ 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:apple @Date: 2010-11-3 */ 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:apple @Date: 2010-11-3 */ 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:apple @Date: 2010-11-3 */ 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:apple @Date: 2010-11-3 */ 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:apple @Date: 2010-11-3 */ 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:apple @Date: 2010-11-3 */ 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:apple @Date: 2010-11-3 */ 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:apple @Date: 2010-11-3 */ 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:apple @Date: 2010-11-3 */ 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:apple @Date: 2010-11-3 */ 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:apple @Date: 2010-11-3 */ 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:apple @Date: 2010-11-3 */ 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:apple @Date: 2010-11-3 */ 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:apple @Date: 2010-11-3 */ 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:apple @Date: 2010-11-3 */ 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:apple @Date: 2010-11-3 */ 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:apple @Date: 2010-11-3 */ 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:apple @Date: 2010-11-3 */ 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 ); } }
DateUtil.java:
package net.hlj.integralshop.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; /** * 1.日期比较 2.获取2个字符日期的天数差,周数差,月数差,年数差 3.日期添加 4.判断给定日期是不是润年 */ 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:apple @Date: 2010-11-3 */ 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:apple @Date: 2010-11-3 */ 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 ) /(1000606024 ) ); return betweenDays; } /** * 获取2个字符日期的周数差 @param p_startDate @param p_endDate @return 周数差 @Author:apple @Date: 2010-11-3 */ 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:apple @Date: 2010-11-3 */ 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:apple @Date: 2010-11-3 */ 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 添加后格式化的时间 @Author:apple @Date: 2010-11-3 */ 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); } }