`

java日期处理

阅读更多

有关日期工具类(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);
	}
}


 

 

分享到:
评论

相关推荐

    java日期处理大全

    ### Java日期处理大全:掌握时间的艺术 在Java编程中,日期和时间的处理是不可或缺的一部分,尤其是在涉及到数据记录、时间戳、定时任务等场景时。本文将深入探讨Java中的日期处理技术,涵盖从基础到进阶的各种技巧...

    java日期处理总结

    java中关于日期处理的总结,包含各种日期格式之间的转java.util.Date(已经不提倡使用,该类的方法比较少) java.util.Calendar(抽象类) java.util.GregorianCalendar(是Calendar的子类,日期处理时候经常使用该类)****...

    Java日期处理工具类

    基本涵盖了各种场景的日期处理需要,包括时间类型转换,获取N天前后,月初月末,某段时间按天拆分等功能,欢迎使用。

    java日期处理方法

    ### Java日期处理方法 在Java开发中,对日期与时间的操作是极其常见且重要的一个环节。无论是处理用户的出生年月日、注册日期还是订单的创建时间等,都需要使用到Java提供的日期类进行处理。本文将深入探讨Java中的...

    常用代码:java日期处理

    这篇博客"常用代码:java日期处理"很可能包含了关于如何在Java中有效地处理日期的实用示例和方法。这里我们将深入探讨Java日期处理的核心概念、API和最佳实践。 1. **Java日期API的发展历程** - Java 1.0引入了`...

    DateHandler.java日期处理类Java文件下载.rar

    DateHandler.java日期处理类Java文件下载,有些功能很不错哦,比如计算是否是季度末、计算从现在开始几天后的时间、得到当前时间,用于文件名,使用yyyyMMddHHmmss格式、比较日期,与现在-N天的日期对比、比较日期,...

    Java日期处理类 自己整理的

    自己整理的Java日期处理类 。包含获取两个之间段之间的天数、月初日期,月末日期、一个时间段之间的所有的日期,月份 一周的第一天,最后一天、 当前是周几等。仅供参考

    java日期处理小结

    在Java中,日期处理是一项常见的任务,涉及到多个类和方法。本篇文章主要总结了Java中关于日期处理的基础知识,包括`java.util.Calendar`,`java.util.GregorianCalendar`以及`java.util.Date`这三个核心类。 首先...

    java 日期处理工具类

    java 日期处理工具类

    java语言日期处理大全

    以下是一些关于Java日期处理的关键知识点,这些知识点在给定的文件中有所提及: 1. **获取当前日期**: Java通过`java.util.Date`类可以获取服务器上的当前日期。创建一个Date对象即会返回当前系统时间,如`Date ...

    Java中日期处理的代码

    根据给定的文件标题、描述、标签以及部分内容,我们可以总结出以下有关 Java 日期处理的知识点: ### 1. 导入必要的包 在 Java 中处理日期时,我们需要导入一些必要的包来支持日期时间的格式化、解析等功能。示例...

    java日期处理工具类

    日期操作工具类,主要实现了日期的常用操作。 * * 在工具类中经常使用到工具类的格式化描述,这个主要是一个日期的操作类,所以日志格式主要使用 SimpleDateFormat的定义格式. * * 格式的意义如下: 日期和...

    java日期处理.pdf

    在Java编程中,日期处理是常见的任务之一,用于管理和计算日期和时间。Java提供了多种类和方法来处理日期,如`Date`、`SimpleDateFormat`和`Calendar`。以下是关于这些类和方法的详细说明: 1. **`java.util.Date`*...

    java(日期处理大全)

    第一部分关于JAVA的Date (参考关于JAVA的Date总结) 第二部分Date工具类(参考一个总结好的很好的关于JAVA的Date工具类)

    java日期处理[文].pdf

    在Java编程中,日期处理是常见的任务之一,用于管理和计算日期和时间。本文将深入探讨Java中的日期处理机制,特别是围绕`java.util.Date`和`java.util.Calendar`这两个核心类。 首先,`java.util.Date`类是Java中...

    java日期和查询数据库生成XML文件类

    1. **Java日期处理**: - `java.time`包:Java 8引入的新时间日期API,提供了`LocalDate`, `LocalTime`, `LocalDateTime`等类,它们提供了丰富的日期和时间操作功能。 - `SimpleDateFormat`:旧版日期格式化工具,...

Global site tag (gtag.js) - Google Analytics