java dateutils工具类_JAVA 日期处理工具类 DateUtils

//JAVA 日期处理工具类 DateUtils

packagecom.genlot.common.utils;importjava.sql.Timestamp;importjava.text.ParseException;importjava.text.SimpleDateFormat;importjava.util.ArrayList;importjava.util.Calendar;importjava.util.Date;importjava.util.List;importorg.apache.log4j.Logger;importcom.genlot.common.utils.validate.ValidateUtils;/*** 日期工具类

*

* @date 2017-3-3 14:48:20*/

public class DateUtils extendsorg.apache.commons.lang.time.DateUtils {public static final String TIME_WITH_MINUTE_PATTERN = "HH:mm";public static final long DAY_MILLI = 24 * 60 * 60 * 1000; //一天的MilliSecond//取值范围:就是临界点包不包含等于

public final static int LEFT_OPEN_RIGHT_OPEN = 1;public final static int LEFT_CLOSE_RIGHT_OPEN = 2;public final static int LEFT_OPEN_RIGHT_CLOSE = 3;public final static int LEFT_CLOSE_RIGHT_CLOSE = 4;/*** 比较日期的模式 --只比较日期,不比较时间*/

public final static int COMP_MODEL_DATE = 1;/*** 比较日期的模式 --只比较时间,不比较日期*/

public final static int COMP_MODEL_TIME = 2;/*** 比较日期的模式 --比较日期,也比较时间*/

public final static int COMP_MODEL_DATETIME = 3;private static Logger logger = Logger.getLogger(DateUtils.class);/*** 要用到的DATE Format的定义*/

public static String DATE_FORMAT_DATEONLY = "yyyy-MM-dd"; //年/月/日

public static String DATE_FORMAT_DATETIME = "yyyy-MM-dd HH:mm:ss"; //年/月/日

public static SimpleDateFormat sdfDateTime = newSimpleDateFormat(DateUtils.DATE_FORMAT_DATETIME);public static SimpleDateFormat sdfDateOnly = newSimpleDateFormat(DateUtils.DATE_FORMAT_DATEONLY);public static final SimpleDateFormat formatTimestamp = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");public static final SimpleDateFormat SHORTDATEFORMAT = new SimpleDateFormat("yyyyMMdd");public static final SimpleDateFormat SHORT_DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd");public static final SimpleDateFormat LONG_DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");public static final SimpleDateFormat LONG_DATE_FORMAT_SSS = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");public static final SimpleDateFormat HMS_FORMAT = new SimpleDateFormat("HH:mm:ss");/*** 根据日期格式字符串解析日期字符串

*

*@paramstr 日期字符串

*@paramparsePatterns 日期格式字符串

*@return解析后日期

*@throwsParseException*/

public static Date parseDate(String str, String parsePatterns) throwsParseException {return parseDate(str, newString[]{parsePatterns});

}/*** 根据单位字段比较两个日期

*

*@paramdate 日期1

*@paramotherDate 日期2

*@paramwithUnit 单位字段,从Calendar field取值

*@return等于返回0值, 大于返回大于0的值 小于返回小于0的值*/

public static int compareDate(Date date, Date otherDate, intwithUnit) {

Calendar dateCal=Calendar.getInstance();

dateCal.setTime(date);

Calendar otherDateCal=Calendar.getInstance();

otherDateCal.setTime(otherDate);switch(withUnit) {caseCalendar.YEAR:

dateCal.clear(Calendar.MONTH);

otherDateCal.clear(Calendar.MONTH);caseCalendar.MONTH:

dateCal.set(Calendar.DATE,1);

otherDateCal.set(Calendar.DATE,1);caseCalendar.DATE:

dateCal.set(Calendar.HOUR_OF_DAY,0);

otherDateCal.set(Calendar.HOUR_OF_DAY,0);caseCalendar.HOUR:

dateCal.clear(Calendar.MINUTE);

otherDateCal.clear(Calendar.MINUTE);caseCalendar.MINUTE:

dateCal.clear(Calendar.SECOND);

otherDateCal.clear(Calendar.SECOND);caseCalendar.SECOND:

dateCal.clear(Calendar.MILLISECOND);

otherDateCal.clear(Calendar.MILLISECOND);caseCalendar.MILLISECOND:break;default:throw new IllegalArgumentException("withUnit 单位字段 " + withUnit + " 不合法!!");

}returndateCal.compareTo(otherDateCal);

}/*** 根据单位字段比较两个时间

*

*@paramdate 时间1

*@paramotherDate 时间2

*@paramwithUnit 单位字段,从Calendar field取值

*@return等于返回0值, 大于返回大于0的值 小于返回小于0的值*/

public static int compareTime(Date date, Date otherDate, intwithUnit) {

Calendar dateCal=Calendar.getInstance();

dateCal.setTime(date);

Calendar otherDateCal=Calendar.getInstance();

otherDateCal.setTime(otherDate);

dateCal.clear(Calendar.YEAR);

dateCal.clear(Calendar.MONTH);

dateCal.set(Calendar.DATE,1);

otherDateCal.clear(Calendar.YEAR);

otherDateCal.clear(Calendar.MONTH);

otherDateCal.set(Calendar.DATE,1);switch(withUnit) {caseCalendar.HOUR:

dateCal.clear(Calendar.MINUTE);

otherDateCal.clear(Calendar.MINUTE);caseCalendar.MINUTE:

dateCal.clear(Calendar.SECOND);

otherDateCal.clear(Calendar.SECOND);caseCalendar.SECOND:

dateCal.clear(Calendar.MILLISECOND);

otherDateCal.clear(Calendar.MILLISECOND);caseCalendar.MILLISECOND:break;default:throw new IllegalArgumentException("withUnit 单位字段 " + withUnit + " 不合法!!");

}returndateCal.compareTo(otherDateCal);

}/*** 获得当前的日期毫秒

*

*@return

*/

public static longnowTimeMillis() {returnSystem.currentTimeMillis();

}/*** 获得当前的时间戳

*

*@return

*/

public staticTimestamp nowTimeStamp() {return newTimestamp(nowTimeMillis());

}/*** yyyy-MM-dd 当前日期*/

public staticString getReqDate() {return SHORTDATEFORMAT.format(newDate());

}/*** yyyy-MM-dd 传入日期

*

*@paramdate

*@return

*/

public staticString getReqDate(Date date) {returnSHORT_DATE_FORMAT.format(date);

}/*** yyyyMMdd 传入日期

*

*@paramdate

*@return

*/

public staticString getReqDateyyyyMMdd(Date date) {returnSHORTDATEFORMAT.format(date);

}/*** yyyy-MM-dd 传入的时间戳

*

*@paramdate

*@return

*/

public staticString TimestampToDateStr(Timestamp tmp) {returnSHORT_DATE_FORMAT.format(tmp);

}/*** HH:mm:ss 当前时间

*

*@return

*/

public staticString getReqTime() {return HMS_FORMAT.format(newDate());

}/*** 得到时间戳格式字串

*

*@paramdate

*@return

*/

public staticString getTimeStampStr(Date date) {returnLONG_DATE_FORMAT.format(date);

}/*** 得到长日期格式字串

*

*@return

*/

public staticString getLongDateStr() {return LONG_DATE_FORMAT.format(newDate());

}public staticString getLongDateStr(Timestamp time) {returnLONG_DATE_FORMAT.format(time);

}/*** 得到短日期格式字串

*

*@paramdate

*@return

*/

public staticString getShortDateStr(Date date) {returnSHORT_DATE_FORMAT.format(date);

}public staticString getShortDateStr() {return SHORT_DATE_FORMAT.format(newDate());

}/*** 计算 second 秒后的时间

*

*@paramdate

*@paramsecond

*@return

*/

public static Date addSecond(Date date, intsecond) {

Calendar calendar=Calendar.getInstance();

calendar.setTime(date);

;

calendar.add(Calendar.SECOND, second);returncalendar.getTime();

}/*** 计算 minute 分钟后的时间

*

*@paramdate

*@paramminute

*@return

*/

public static Date addMinute(Date date, intminute) {

Calendar calendar=Calendar.getInstance();

calendar.setTime(date);

calendar.add(Calendar.MINUTE, minute);returncalendar.getTime();

}/*** 计算 hour 小时后的时间

*

*@paramdate

*@paramminute

*@return

*/

public static Date addHour(Date date, inthour) {

Calendar calendar=Calendar.getInstance();

calendar.setTime(date);

calendar.add(Calendar.HOUR, hour);returncalendar.getTime();

}/*** 得到day的起始时间点。

*

*@paramdate

*@return

*/

public staticDate getDayStart(Date date) {

Calendar calendar=Calendar.getInstance();

calendar.setTime(date);

calendar.set(Calendar.HOUR_OF_DAY,0);

calendar.set(Calendar.MINUTE,0);

calendar.set(Calendar.SECOND,0);

calendar.set(Calendar.MILLISECOND,0);returncalendar.getTime();

}/*** 得到day的终止时间点.

*

*@paramdate

*@return

*/

public staticDate getDayEnd(Date date) {

Calendar calendar=Calendar.getInstance();

calendar.setTime(date);

calendar.set(Calendar.HOUR_OF_DAY,0);

calendar.set(Calendar.MINUTE,0);

calendar.set(Calendar.SECOND,0);

calendar.set(Calendar.MILLISECOND,0);

calendar.add(Calendar.DAY_OF_MONTH,1);

calendar.add(Calendar.MILLISECOND,-1);returncalendar.getTime();

}/*** 计算 day 天后的时间

*

*@paramdate

*@paramday

*@return

*/

public static Date addDay(Date date, intday) {

Calendar calendar=Calendar.getInstance();

calendar.setTime(date);

calendar.add(Calendar.DAY_OF_MONTH, day);returncalendar.getTime();

}/*** 得到month的终止时间点.

*

*@paramdate

*@return

*/

public staticDate getMonthEnd(Date date) {

Calendar calendar=Calendar.getInstance();

calendar.setTime(date);

calendar.set(Calendar.DAY_OF_MONTH,1);

calendar.set(Calendar.HOUR_OF_DAY,0);

calendar.set(Calendar.MINUTE,0);

calendar.set(Calendar.SECOND,0);

calendar.set(Calendar.MILLISECOND,0);

calendar.add(Calendar.MONTH,1);

calendar.add(Calendar.MILLISECOND,-1);returncalendar.getTime();

}public static Date addYear(Date date, intyear) {

Calendar calendar=Calendar.getInstance();

calendar.setTime(date);

calendar.add(Calendar.DAY_OF_YEAR,365 *year);returncalendar.getTime();

}public staticTimestamp strToTimestamp(String dateStr) {returnTimestamp.valueOf(dateStr);

}public staticTimestamp strToTimestamp(Date date) {returnTimestamp.valueOf(formatTimestamp.format(date));

}public staticTimestamp getCurTimestamp() {return Timestamp.valueOf(formatTimestamp.format(newDate()));

}/*** 取得两个日期之间的日数

*

*@returnt1到t2间的日数,如果t2 在 t1之后,返回正数,否则返回负数*/

public static longdaysBetween(java.sql.Timestamp t1, java.sql.Timestamp t2) {return (t2.getTime() - t1.getTime()) /DAY_MILLI;

}/*** 返回java.sql.Timestamp型的SYSDATE

*

*@returnjava.sql.Timestamp型的SYSDATE

* @history

*@since1.0*/

public staticjava.sql.Timestamp getSysDateTimestamp() {return newjava.sql.Timestamp(System.currentTimeMillis());

}/*** 利用缺省的Date格式(YYYY/MM/DD)转换String到java.sql.Timestamp

*

*@paramsDate Date string

*@return* @history

*@since1.0*/

public staticjava.sql.Timestamp toSqlTimestamp(String sDate) {if (sDate == null) {return null;

}if (sDate.length() !=DateUtils.DATE_FORMAT_DATEONLY.length()&& sDate.length() !=DateUtils.DATE_FORMAT_DATETIME.length()) {return null;

}returntoSqlTimestamp(sDate,

sDate.length()==DateUtils.DATE_FORMAT_DATEONLY.length()?DateUtils.DATE_FORMAT_DATEONLY

: DateUtils.DATE_FORMAT_DATETIME);

}/*** 利用缺省的Date格式(YYYY/MM/DD hh:mm:ss)转化String到java.sql.Timestamp

*

*@paramsDate Date string

*@paramsFmt Date format DATE_FORMAT_DATEONLY/DATE_FORMAT_DATETIME

*@return* @history

*@since1.0*/

public staticjava.sql.Timestamp toSqlTimestamp(String sDate, String sFmt) {

String temp= null;if (sDate == null || sFmt == null) {return null;

}if (sDate.length() !=sFmt.length()) {return null;

}if(sFmt.equals(DateUtils.DATE_FORMAT_DATETIME)) {

temp= sDate.replace('/', '-');

temp= temp + ".000000000";

}else if(sFmt.equals(DateUtils.DATE_FORMAT_DATEONLY)) {

temp= sDate.replace('/', '-');

temp= temp + " 00:00:00.000000000";

}else{return null;

}returnjava.sql.Timestamp.valueOf(temp);

}/*** 以YYYY/MM/DD HH24:MI:SS格式返回系统日期时间

*

*@return系统日期时间

* @history

*@since1.0*/

public staticString getSysDateTimeString() {return toString(newjava.util.Date(System.currentTimeMillis()), DateUtils.sdfDateTime);

}/*** 根据指定的Format转化java.util.Date到String

*

*@paramdt java.util.Date instance

*@paramsFmt Date format , DATE_FORMAT_DATEONLY or DATE_FORMAT_DATETIME

*@return* @history

*@since1.0*/

public staticString toString(java.util.Date dt, String sFmt) {if (dt == null || sFmt == null || "".equals(sFmt)) {return "";

}return toString(dt, newSimpleDateFormat(sFmt));

}/*** 利用指定SimpleDateFormat instance转换java.util.Date到String

*

*@paramdt java.util.Date instance

*@paramformatter SimpleDateFormat Instance

*@return* @history

*@since1.0*/

private staticString toString(java.util.Date dt, SimpleDateFormat formatter) {

String sRet= null;try{

sRet=formatter.format(dt).toString();

}catch(Exception e) {

logger.error(e);

sRet= null;

}returnsRet;

}/*** 转换java.sql.Timestamp到String,格式为YYYY/MM/DD HH24:MI

*

*@paramdt java.sql.Timestamp instance

*@return* @history

*@since1.0*/

public staticString toSqlTimestampString2(java.sql.Timestamp dt) {if (dt == null) {return null;

}

String temp=toSqlTimestampString(dt, DateUtils.DATE_FORMAT_DATETIME);return temp.substring(0, 16);

}public staticString toString(java.sql.Timestamp dt) {return dt == null ? "": toSqlTimestampString2(dt);

}/*** 根据指定的格式转换java.sql.Timestamp到String

*

*@paramdt java.sql.Timestamp instance

*@paramsFmt Date 格式,DATE_FORMAT_DATEONLY/DATE_FORMAT_DATETIME/

* DATE_FORMAT_SESSION

*@return* @history

*@since1.0*/

public staticString toSqlTimestampString(java.sql.Timestamp dt, String sFmt) {

String temp= null;

String out= null;if (dt == null || sFmt == null) {return null;

}

temp=dt.toString();if (sFmt.equals(DateUtils.DATE_FORMAT_DATETIME) || //"YYYY/MM/DD//HH24:MI:SS"

sFmt.equals(DateUtils.DATE_FORMAT_DATEONLY)) { //YYYY/MM/DD

temp = temp.substring(0, sFmt.length());

out= temp.replace('/', '-');//}else if( sFmt.equals (DateUtils.DATE_FORMAT_SESSION ) ){// //Session//out =//temp.substring(0,4)+temp.substring(5,7)+temp.substring(8,10);//out += temp.substring(12,14) + temp.substring(15,17);

}returnout;

}//得到当前日期的星期

public static intgetWeek() {

Calendar cal=Calendar.getInstance();

cal.setTime(newDate());int w =cal.get(Calendar.DAY_OF_WEEK);returnw;

}/*** Timestamp 格式转换成yyyy-MM-dd timestampToSql(Timestamp 格式转换成yyyy-MM-dd)

*

*@paramtimestamp 时间

*@returncreateTimeStr yyyy-MM-dd 时间

* @Exception 异常对象

*@sinceV1.0*/

public staticString timestampToStringYMD(java.sql.Timestamp timestamp) {

SimpleDateFormat sdf= newSimpleDateFormat(DateUtils.DATE_FORMAT_DATEONLY);

String createTimeStr=sdf.format(timestamp);returncreateTimeStr;

}/*** 判断一个时间是否在某个时间区间内

*

*@paramnow 目标时间

*@paramstart 时间区间开始

*@paramend 时间区间结束

*@parammodel 区间模式

*@return是否在区间内*/

public static boolean isBetween(Date now, Date start, Date end, intmodel) {returnisBetween(now, start, end, model, LEFT_OPEN_RIGHT_OPEN);

}/*** 判断时间是否在制定的时间段之类

*

*@paramdate 需要判断的时间

*@paramstart 时间段的起始时间

*@paramend 时间段的截止时间

*@paraminterModel 区间的模式

*

*

 
 

* 取值:

* LEFT_OPEN_RIGHT_OPEN

* LEFT_CLOSE_RIGHT_OPEN

* LEFT_OPEN_RIGHT_CLOSE

* LEFT_CLOSE_RIGHT_CLOSE

*

*@paramcompModel 比较的模式

*

*

 
 

* 取值:

* COMP_MODEL_DATE 只比较日期,不比较时间

* COMP_MODEL_TIME 只比较时间,不比较日期

* COMP_MODEL_DATETIME 比较日期,也比较时间

*

*@return

*/

public static boolean isBetween(Date date, Date start, Date end, int interModel, intcompModel) {if (date == null || start == null || end == null) {throw new IllegalArgumentException("日期不能为空");

}

SimpleDateFormat format= null;switch(compModel) {caseCOMP_MODEL_DATE: {

format= new SimpleDateFormat("yyyyMMdd");break;

}caseCOMP_MODEL_TIME: {

format= new SimpleDateFormat("HHmmss");break;

}caseCOMP_MODEL_DATETIME: {

format= new SimpleDateFormat("yyyyMMddHHmmss");break;

}default: {throw new IllegalArgumentException(String.format("日期的比较模式[%d]有误", compModel));

}

}long dateNumber =Long.parseLong(format.format(date));long startNumber =Long.parseLong(format.format(start));long endNumber =Long.parseLong(format.format(end));switch(interModel) {caseLEFT_OPEN_RIGHT_OPEN: {if (dateNumber <= startNumber || dateNumber >=endNumber) {return false;

}else{return true;

}

}caseLEFT_CLOSE_RIGHT_OPEN: {if (dateNumber < startNumber || dateNumber >=endNumber) {return false;

}else{return true;

}

}caseLEFT_OPEN_RIGHT_CLOSE: {if (dateNumber <= startNumber || dateNumber >endNumber) {return false;

}else{return true;

}

}caseLEFT_CLOSE_RIGHT_CLOSE: {if (dateNumber < startNumber || dateNumber >endNumber) {return false;

}else{return true;

}

}default: {throw new IllegalArgumentException(String.format("日期的区间模式[%d]有误", interModel));

}

}

}/*** 得到当前周起始时间

*

*@paramdate

*@return

*/

public staticDate getWeekStart(Date date) {

Calendar calendar=Calendar.getInstance();

calendar.setTime(date);

calendar.get(Calendar.WEEK_OF_YEAR);int firstDay =calendar.getFirstDayOfWeek();

calendar.set(Calendar.DAY_OF_WEEK, firstDay);

calendar.set(Calendar.HOUR_OF_DAY,0);

calendar.set(Calendar.MINUTE,0);

calendar.set(Calendar.SECOND,0);

calendar.set(Calendar.MILLISECOND,0);returncalendar.getTime();

}/*** 得到当前周截止时间

*

*@paramdate

*@return

*/

public staticDate getWeekEnd(Date date) {

Calendar calendar=Calendar.getInstance();

calendar.setTime(date);

calendar.get(Calendar.WEEK_OF_YEAR);int firstDay =calendar.getFirstDayOfWeek();

calendar.set(Calendar.DAY_OF_WEEK,8 -firstDay);

calendar.set(Calendar.HOUR_OF_DAY,23);

calendar.set(Calendar.MINUTE,59);

calendar.set(Calendar.SECOND,59);

calendar.set(Calendar.MILLISECOND,0);returncalendar.getTime();

}/*** 得到当月起始时间

*

*@paramdate

*@return

*/

public staticDate getMonthStart(Date date) {

Calendar calendar=Calendar.getInstance();

calendar.setTime(date);

calendar.set(Calendar.DAY_OF_MONTH,1);

calendar.set(Calendar.HOUR_OF_DAY,0);

calendar.set(Calendar.MINUTE,0);

calendar.set(Calendar.SECOND,0);

calendar.set(Calendar.MILLISECOND,0);returncalendar.getTime();

}/*** 得到当前年起始时间

*

*@paramdate

*@return

*/

public staticDate getYearStart(Date date) {

Calendar calendar=Calendar.getInstance();

calendar.setTime(date);

calendar.set(Calendar.YEAR, calendar.get(Calendar.YEAR));

calendar.set(Calendar.MONTH,0);

calendar.set(Calendar.DAY_OF_MONTH,1);

calendar.set(Calendar.HOUR_OF_DAY,0);

calendar.set(Calendar.MINUTE,0);

calendar.set(Calendar.SECOND,0);

calendar.set(Calendar.MILLISECOND,0);returncalendar.getTime();

}/*** 得到当前年最后一天

*

*@paramdate

*@return

*/

public staticDate getYearEnd(Date date) {

Calendar calendar=Calendar.getInstance();

calendar.setTime(date);

calendar.set(Calendar.YEAR, calendar.get(Calendar.YEAR));

calendar.set(Calendar.MONTH,11);

calendar.set(Calendar.DAY_OF_MONTH,31);

calendar.set(Calendar.HOUR_OF_DAY,23);

calendar.set(Calendar.MINUTE,59);

calendar.set(Calendar.SECOND,59);

calendar.set(Calendar.MILLISECOND,0);returncalendar.getTime();

}/*** 取得月天数

*

*@paramdate

*@return

*/

public static intgetDayOfMonth(Date date) {

Calendar c=Calendar.getInstance();

c.setTime(date);returnc.getActualMaximum(Calendar.DAY_OF_MONTH);

}/*** 取得月第一天

*

*@paramdate

*@return

*/

public staticDate getFirstDateOfMonth(Date date) {

Calendar c=Calendar.getInstance();

c.setTime(date);

c.set(Calendar.DAY_OF_MONTH, c.getActualMinimum(Calendar.DAY_OF_MONTH));returnc.getTime();

}/*** 取得月最后一天

*

*@paramdate

*@return

*/

public staticDate getLastDateOfMonth(Date date) {

Calendar c=Calendar.getInstance();

c.setTime(date);

c.set(Calendar.DAY_OF_MONTH, c.getActualMaximum(Calendar.DAY_OF_MONTH));returnc.getTime();

}/*** 取得季度第一天

*

*@paramdate

*@return

*/

public staticDate getSeasonStart(Date date) {return getDayStart(getFirstDateOfMonth(getSeasonDate(date)[0]));

}/*** 取得季度最后一天

*

*@paramdate

*@return

*/

public staticDate getSeasonEnd(Date date) {return getDayEnd(getLastDateOfMonth(getSeasonDate(date)[2]));

}/*** 取得季度月

*

*@paramdate

*@return

*/

public staticDate[] getSeasonDate(Date date) {

Date[] season= new Date[3];

Calendar c=Calendar.getInstance();

c.setTime(date);int nSeason =getSeason(date);if (nSeason == 1) {//第一季度

c.set(Calendar.MONTH, Calendar.JANUARY);

season[0] =c.getTime();

c.set(Calendar.MONTH, Calendar.FEBRUARY);

season[1] =c.getTime();

c.set(Calendar.MONTH, Calendar.MARCH);

season[2] =c.getTime();

}else if (nSeason == 2) {//第二季度

c.set(Calendar.MONTH, Calendar.APRIL);

season[0] =c.getTime();

c.set(Calendar.MONTH, Calendar.MAY);

season[1] =c.getTime();

c.set(Calendar.MONTH, Calendar.JUNE);

season[2] =c.getTime();

}else if (nSeason == 3) {//第三季度

c.set(Calendar.MONTH, Calendar.JULY);

season[0] =c.getTime();

c.set(Calendar.MONTH, Calendar.AUGUST);

season[1] =c.getTime();

c.set(Calendar.MONTH, Calendar.SEPTEMBER);

season[2] =c.getTime();

}else if (nSeason == 4) {//第四季度

c.set(Calendar.MONTH, Calendar.OCTOBER);

season[0] =c.getTime();

c.set(Calendar.MONTH, Calendar.NOVEMBER);

season[1] =c.getTime();

c.set(Calendar.MONTH, Calendar.DECEMBER);

season[2] =c.getTime();

}returnseason;

}/*** 1 第一季度 2 第二季度 3 第三季度 4 第四季度

*

*@paramdate

*@return

*/

public static intgetSeason(Date date) {int season = 0;

Calendar c=Calendar.getInstance();

c.setTime(date);int month =c.get(Calendar.MONTH);switch(month) {caseCalendar.JANUARY:caseCalendar.FEBRUARY:caseCalendar.MARCH:

season= 1;break;caseCalendar.APRIL:caseCalendar.MAY:caseCalendar.JUNE:

season= 2;break;caseCalendar.JULY:caseCalendar.AUGUST:caseCalendar.SEPTEMBER:

season= 3;break;caseCalendar.OCTOBER:caseCalendar.NOVEMBER:caseCalendar.DECEMBER:

season= 4;break;default:break;

}returnseason;

}public static intgetWeekOfYear(Date date) {

Calendar calendar=Calendar.getInstance();

calendar.setFirstDayOfWeek(Calendar.MONDAY);

calendar.setTime(date);returncalendar.get(Calendar.WEEK_OF_YEAR);

}public static intgetMonthOfYear(Date date) {

Calendar calendar=Calendar.getInstance();

calendar.setFirstDayOfWeek(Calendar.MONDAY);

calendar.setTime(date);returncalendar.get(Calendar.WEEK_OF_MONTH);

}/*** 字符串转date

*

*@paramdateString

*@return

*/

public staticDate StringToDate(String dateString) {

SimpleDateFormat sdf= new SimpleDateFormat("yyyy/MM/dd");

Date date= null;try{

date=sdf.parse(dateString);

}catch(ParseException e) {

logger.error(e);

}returndate;

}/*** 判断输入日期是一个星期中的第几天(星期天为一个星期第一天)

*

*@paramdate

*@return

*/

public static intgetWeekIndex(Date date) {

Calendar calendar=Calendar.getInstance();

calendar.setTime(date);returncalendar.get(Calendar.DAY_OF_WEEK);

}/*** 当前时间的前几天,并且以例如2013/12/09 00:00:00 形式输出*/

public static Date subDays(intdays) {

Date date= addDay(new Date(), -days);

String dateStr=getReqDate(date);

Date date1= null;

SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");try{

date1=sdf.parse(dateStr);

}catch(ParseException e) {

logger.error(e);

}returndate1;

}/*** 判断开始时间和结束时间,是否超出了当前时间的一定的间隔数限制 如:开始时间和结束时间,不能超出距离当前时间90天

*

*@paramstartDate 开始时间

*@paramendDate 结束时间按

*@paraminterval 间隔数

*@paramdateUnit 单位(如:月,日),参照Calendar的时间单位

*@return

*/

public static boolean isOverIntervalLimit(Date startDate, Date endDate, int interval, intdateUnit) {

Calendar cal=Calendar.getInstance();

cal.setTime(newDate());

cal.add(dateUnit, interval* (-1));

Date curDate=getDayStart(cal.getTime());if (getDayStart(startDate).compareTo(curDate) < 0 || getDayStart(endDate).compareTo(curDate) < 0) {return true;

}return false;

}/*** 判断开始时间和结束时间,是否超出了当前时间的一定的间隔数限制, 时间单位默认为天数 如:开始时间和结束时间,不能超出距离当前时间90天

*

*@paramstartDate 开始时间

*@paramendDate 结束时间按

*@paraminterval 间隔数

*@return

*/

public static boolean isOverIntervalLimit(Date startDate, Date endDate, intinterval) {

Calendar cal=Calendar.getInstance();

cal.setTime(newDate());

cal.add(Calendar.DAY_OF_MONTH, interval* (-1));

Date curDate=getDayStart(cal.getTime());if (getDayStart(startDate).compareTo(curDate) < 0 || getDayStart(endDate).compareTo(curDate) < 0) {return true;

}return false;

}/*** 判断开始时间和结束时间,是否超出了当前时间的一定的间隔数限制, 时间单位默认为天数 如:开始时间和结束时间,不能超出距离当前时间90天

*

*@paramstartDate 开始时间

*@paramendDate 结束时间按

*@paraminterval 间隔数

*@return

*/

public static boolean isOverIntervalLimit(String startDateStr, String endDateStr, intinterval) {

Date startDate= null;

Date endDate= null;try{

startDate=DateUtils.parseDate(startDateStr, DateUtils.DATE_FORMAT_DATEONLY);

endDate=DateUtils.parseDate(endDateStr, DateUtils.DATE_FORMAT_DATEONLY);

}catch(ParseException e) {

logger.error(e);return false;

}returnisOverIntervalLimit(startDate, endDate, interval);

}/*** 传入时间字符串及时间格式,返回对应的Date对象

*

*@paramsrc 时间字符串

*@parampattern 时间格式

*@returnDate*/

public staticjava.util.Date getDateFromString(String src, String pattern) {

SimpleDateFormat f= newSimpleDateFormat(pattern);try{returnf.parse(src);

}catch(ParseException e) {return null;

}

}/*** 取季度

*

*@paramdate

*@return

*/@SuppressWarnings("deprecation")public static intgetQuarter(Date date) {if (date.getMonth() == 0 || date.getMonth() == 1 || date.getMonth() == 2) {return 1;

}else if (date.getMonth() == 3 || date.getMonth() == 4 || date.getMonth() == 5) {return 2;

}else if (date.getMonth() == 6 || date.getMonth() == 7 || date.getMonth() == 8) {return 3;

}else if (date.getMonth() == 9 || date.getMonth() == 10 || date.getMonth() == 11) {return 4;

}else{return 0;

}

}/*** 取得通用日期时间格式字符串

*

*@paramDate

*@returnString*/

public staticString formatDate(Date date) {if (date == null) {return "";

}

SimpleDateFormat dateFormat= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");returndateFormat.format(date);

}/*** 获取当日的日期格式串

*

*@param*@returnString*/

public staticString today() {return formatDate(new Date(), "yyyy-MM-dd");

}/*** 获取当前时间格式串

*

*@param*@returnString*/

public staticString currentTime() {return formatDate(new Date(), "yyyyMMddhhmmssSSS");

}/*** 取得指定日期格式的字符串

*

*@paramDate

*@returnString*/

public staticString formatDate(Date date, String format) {

SimpleDateFormat dateFormat= newSimpleDateFormat(format);returndateFormat.format(date);

}/*** 获取昨日的日期格式串

*

*@returnDate*/

public staticString getYesterday() {

Calendar calendar=Calendar.getInstance();

calendar.add(Calendar.DATE,-1);return formatDate(calendar.getTime(), "yyyy-MM-dd");

}/*** 判断当前时间是否在一定的时间范围内

*

*@paramString

*@returnboolean*/

public static booleanisInBetweenTimes(String startTime, String endTime) {

Date nowTime= newDate();

SimpleDateFormat sdf= new SimpleDateFormat("HH:mm:ss");

String time=sdf.format(nowTime);if (time.compareTo(startTime) >= 0 && time.compareTo(endTime) <= 0) {return true;

}else{return false;

}

}/*** 字符转日期

*

*@paramdateStr

*@return

*/

public staticDate getDateByStr(String dateStr) {

SimpleDateFormat formatter= null;if (dateStr == null) {return null;

}else if (dateStr.length() == 10) {

formatter= new SimpleDateFormat("yyyy-MM-dd");

}else if (dateStr.length() == 16) {

formatter= new SimpleDateFormat("yyyy-MM-dd HH:mm");

}else if (dateStr.length() == 19) {

formatter= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

}else if (dateStr.length() > 19) {

dateStr= dateStr.substring(0, 19);

formatter= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

}else{return null;

}try{returnformatter.parse(dateStr);

}catch(ParseException e) {

logger.error(e);return null;

}

}/*** 根据传入的数字,输出相比现在days天的数据

*

*@paramdays

*@returnDate*/

public static Date getDate(intdays) {

Calendar calendar=Calendar.getInstance();

calendar.add(Calendar.DATE, days);returncalendar.getTime();

}/*** 日期最大时间

*

*@paramdt

*@return

*/

public staticDate getMaxTime(Date dt) {

Date dt1= null;

Calendar ca=Calendar.getInstance();

ca.setTime(dt);

ca.add(Calendar.DAY_OF_MONTH,1);

dt1=ca.getTime();

dt1=DateUtils.getMinTime(dt1);

ca.setTime(dt1);

ca.add(Calendar.SECOND,-1);

dt1=ca.getTime();returndt1;

}/*** 日期最小时间

*

*@paramdt

*@return

*/

public staticDate getMinTime(Date dt) {

Date dt1= null;

dt1= DateUtils.getDateByStr(DateUtils.formatDate(dt, "yyyy-MM-dd"));returndt1;

}/*** 月的最后一天

*

*@paramsDate1

*@return

*/@SuppressWarnings("deprecation")public staticDate getLastDayOfMonth(Date date) {

Calendar cDay1=Calendar.getInstance();

cDay1.setTime(date);int lastDay =cDay1.getActualMaximum(Calendar.DAY_OF_MONTH);

Date lastDate=cDay1.getTime();

lastDate.setDate(lastDay);returnlastDate;

}/*** 月的第一天

*

*@paramdate

*@return

*/

public staticDate getFirstDayOfMonth(Date date) {

Calendar calendar=Calendar.getInstance();

calendar.setTime(date);

calendar.set(Calendar.DATE, calendar.getActualMinimum(Calendar.DATE));returncalendar.getTime();

}/*** 上月第一天

*

*@return

*/

public staticDate getPreviousMonthFirstDay() {

Calendar lastDate=Calendar.getInstance();

lastDate.set(Calendar.DATE,1);//设为当前月的1号

lastDate.add(Calendar.MONTH, -1);//减一个月,变为下月的1号

returngetMinTime(lastDate.getTime());

}/*** 上月最后一天

*

*@return

*/

public staticDate getPreviousMonthLastDay() {

Calendar lastDate=Calendar.getInstance();

lastDate.set(Calendar.DATE,1);//设为当前月的1号

lastDate.add(Calendar.DATE, -1);returngetMinTime(lastDate.getTime());

}/*** 两个日期相关天数

*

*@paramstartDate

*@paramendDate

*@return

*/

public static longgetDateDiff(String startDate, String endDate) {long diff = 0;try{

Date date1= new SimpleDateFormat("yyyy-MM-dd").parse(startDate);

Date date2= new SimpleDateFormat("yyyy-MM-dd").parse(endDate);

diff= (date1.getTime() - date2.getTime()) / (24 * 60 * 60 * 1000) > 0 ? (date1.getTime() -date2.getTime())/ (24 * 60 * 60 * 1000)

: (date2.getTime()- date1.getTime()) / (24 * 60 * 60 * 1000);

}catch(ParseException e) {

}returndiff;

}public static longgetDateDiff(Date date1, Date date2) {if (ValidateUtils.isEmpty(date1) ||ValidateUtils.isEmpty(date1)) {return 0L;

}long diff = (date1.getTime() - date2.getTime()) / (24 * 60 * 60 * 1000) > 0 ? (date1.getTime() -date2

.getTime())/ (24 * 60 * 60 * 1000) : (date2.getTime() - date1.getTime()) / (24 * 60 * 60 * 1000);returndiff;

}/** 判断两个时间是不是在一个周中*/

public static booleanisSameWeekWithToday(Date date) {if (date == null) {return false;

}//0.先把Date类型的对象转换Calendar类型的对象

Calendar todayCal =Calendar.getInstance();

Calendar dateCal=Calendar.getInstance();

todayCal.setTime(newDate());

dateCal.setTime(date);int subYear = todayCal.get(Calendar.YEAR) -dateCal.get(Calendar.YEAR);//subYear==0,说明是同一年

if (subYear == 0) {if (todayCal.get(Calendar.WEEK_OF_YEAR) ==dateCal.get(Calendar.WEEK_OF_YEAR))return true;

}else if (subYear == 1 && dateCal.get(Calendar.MONTH) == 11 && todayCal.get(Calendar.MONTH) == 0) {if (todayCal.get(Calendar.WEEK_OF_YEAR) ==dateCal.get(Calendar.WEEK_OF_YEAR))return true;

}else if (subYear == -1 && todayCal.get(Calendar.MONTH) == 11 && dateCal.get(Calendar.MONTH) == 0) {if (todayCal.get(Calendar.WEEK_OF_YEAR) ==dateCal.get(Calendar.WEEK_OF_YEAR))return true;

}return false;

}/*** getStrFormTime:

*

*@paramform 格式时间

*@paramdate 时间

*@return

*/

public staticString getStrFormTime(String form, Date date) {

SimpleDateFormat sdf= newSimpleDateFormat(form);returnsdf.format(date);

}/*** 获取几天内日期 return 2014-5-4、2014-5-3*/

public static List getLastDays(intcountDay) {

List listDate = new ArrayList();for (int i = 0; i < countDay; i++) {

listDate.add(DateUtils.getReqDateyyyyMMdd(DateUtils.getDate(-i)));

}returnlistDate;

}/*** 对时间进行格式化

*

*@paramdate

*@return

*/

public staticDate dateFormat(Date date) {

SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");

Date value= newDate();try{

value=sdf.parse(sdf.format(date));

}catch(ParseException e) {

e.printStackTrace();

}returnvalue;

}public static voidmain(String[] args) {

Date date3= DateUtils.addMinutes(new Date(), 5);

System.out.println(new Date().after(DateUtils.addMinute(new Date(), -10)));

Date date1= DateUtils.addMinutes(new Date(), -1);

Date date2= DateUtils.addMinutes(date1, 5);

System.out.println(date1);

System.out.println(date2);

System.out.println(DateUtils.isBetween(newDate(), date1, date2, DateUtils.COMP_MODEL_TIME));

Integer a= 1;int b = 1;

System.out.println(a==b);

}

}

JAVA 日期处理工具类 DateUtilspackagecom.genlot.common.utils;importjava.sql.Timestamp;importjava.text.ParseException;importjava.text.SimpleDateFormat;importjava.util.ArrayList;importjava.util.Calendar;importjava.util.Date;importjava.util.List;importorg.apache.log4j.Logger;importcom.genlot.common.utils.validate.ValidateUtils;/*** 日期工具类

*

* @date 2017-3-3 14:48:20*/

public class DateUtils extendsorg.apache.commons.lang.time.DateUtils {public static final String TIME_WITH_MINUTE_PATTERN = "HH:mm";public static final long DAY_MILLI = 24 * 60 * 60 * 1000; //一天的MilliSecond//取值范围:就是临界点包不包含等于

public final static int LEFT_OPEN_RIGHT_OPEN = 1;public final static int LEFT_CLOSE_RIGHT_OPEN = 2;public final static int LEFT_OPEN_RIGHT_CLOSE = 3;public final static int LEFT_CLOSE_RIGHT_CLOSE = 4;/*** 比较日期的模式 --只比较日期,不比较时间*/

public final static int COMP_MODEL_DATE = 1;/*** 比较日期的模式 --只比较时间,不比较日期*/

public final static int COMP_MODEL_TIME = 2;/*** 比较日期的模式 --比较日期,也比较时间*/

public final static int COMP_MODEL_DATETIME = 3;private static Logger logger = Logger.getLogger(DateUtils.class);/*** 要用到的DATE Format的定义*/

public static String DATE_FORMAT_DATEONLY = "yyyy-MM-dd"; //年/月/日

public static String DATE_FORMAT_DATETIME = "yyyy-MM-dd HH:mm:ss"; //年/月/日

public static SimpleDateFormat sdfDateTime = newSimpleDateFormat(DateUtils.DATE_FORMAT_DATETIME);public static SimpleDateFormat sdfDateOnly = newSimpleDateFormat(DateUtils.DATE_FORMAT_DATEONLY);public static final SimpleDateFormat formatTimestamp = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");public static final SimpleDateFormat SHORTDATEFORMAT = new SimpleDateFormat("yyyyMMdd");public static final SimpleDateFormat SHORT_DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd");public static final SimpleDateFormat LONG_DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");public static final SimpleDateFormat LONG_DATE_FORMAT_SSS = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");public static final SimpleDateFormat HMS_FORMAT = new SimpleDateFormat("HH:mm:ss");/*** 根据日期格式字符串解析日期字符串

*

*@paramstr 日期字符串

*@paramparsePatterns 日期格式字符串

*@return解析后日期

*@throwsParseException*/

public static Date parseDate(String str, String parsePatterns) throwsParseException {return parseDate(str, newString[]{parsePatterns});

}/*** 根据单位字段比较两个日期

*

*@paramdate 日期1

*@paramotherDate 日期2

*@paramwithUnit 单位字段,从Calendar field取值

*@return等于返回0值, 大于返回大于0的值 小于返回小于0的值*/

public static int compareDate(Date date, Date otherDate, intwithUnit) {

Calendar dateCal=Calendar.getInstance();

dateCal.setTime(date);

Calendar otherDateCal=Calendar.getInstance();

otherDateCal.setTime(otherDate);switch(withUnit) {caseCalendar.YEAR:

dateCal.clear(Calendar.MONTH);

otherDateCal.clear(Calendar.MONTH);caseCalendar.MONTH:

dateCal.set(Calendar.DATE,1);

otherDateCal.set(Calendar.DATE,1);caseCalendar.DATE:

dateCal.set(Calendar.HOUR_OF_DAY,0);

otherDateCal.set(Calendar.HOUR_OF_DAY,0);caseCalendar.HOUR:

dateCal.clear(Calendar.MINUTE);

otherDateCal.clear(Calendar.MINUTE);caseCalendar.MINUTE:

dateCal.clear(Calendar.SECOND);

otherDateCal.clear(Calendar.SECOND);caseCalendar.SECOND:

dateCal.clear(Calendar.MILLISECOND);

otherDateCal.clear(Calendar.MILLISECOND);caseCalendar.MILLISECOND:break;default:throw new IllegalArgumentException("withUnit 单位字段 " + withUnit + " 不合法!!");

}returndateCal.compareTo(otherDateCal);

}/*** 根据单位字段比较两个时间

*

*@paramdate 时间1

*@paramotherDate 时间2

*@paramwithUnit 单位字段,从Calendar field取值

*@return等于返回0值, 大于返回大于0的值 小于返回小于0的值*/

public static int compareTime(Date date, Date otherDate, intwithUnit) {

Calendar dateCal=Calendar.getInstance();

dateCal.setTime(date);

Calendar otherDateCal=Calendar.getInstance();

otherDateCal.setTime(otherDate);

dateCal.clear(Calendar.YEAR);

dateCal.clear(Calendar.MONTH);

dateCal.set(Calendar.DATE,1);

otherDateCal.clear(Calendar.YEAR);

otherDateCal.clear(Calendar.MONTH);

otherDateCal.set(Calendar.DATE,1);switch(withUnit) {caseCalendar.HOUR:

dateCal.clear(Calendar.MINUTE);

otherDateCal.clear(Calendar.MINUTE);caseCalendar.MINUTE:

dateCal.clear(Calendar.SECOND);

otherDateCal.clear(Calendar.SECOND);caseCalendar.SECOND:

dateCal.clear(Calendar.MILLISECOND);

otherDateCal.clear(Calendar.MILLISECOND);caseCalendar.MILLISECOND:break;default:throw new IllegalArgumentException("withUnit 单位字段 " + withUnit + " 不合法!!");

}returndateCal.compareTo(otherDateCal);

}/*** 获得当前的日期毫秒

*

*@return

*/

public static longnowTimeMillis() {returnSystem.currentTimeMillis();

}/*** 获得当前的时间戳

*

*@return

*/

public staticTimestamp nowTimeStamp() {return newTimestamp(nowTimeMillis());

}/*** yyyy-MM-dd 当前日期*/

public staticString getReqDate() {return SHORTDATEFORMAT.format(newDate());

}/*** yyyy-MM-dd 传入日期

*

*@paramdate

*@return

*/

public staticString getReqDate(Date date) {returnSHORT_DATE_FORMAT.format(date);

}/*** yyyyMMdd 传入日期

*

*@paramdate

*@return

*/

public staticString getReqDateyyyyMMdd(Date date) {returnSHORTDATEFORMAT.format(date);

}/*** yyyy-MM-dd 传入的时间戳

*

*@paramdate

*@return

*/

public staticString TimestampToDateStr(Timestamp tmp) {returnSHORT_DATE_FORMAT.format(tmp);

}/*** HH:mm:ss 当前时间

*

*@return

*/

public staticString getReqTime() {return HMS_FORMAT.format(newDate());

}/*** 得到时间戳格式字串

*

*@paramdate

*@return

*/

public staticString getTimeStampStr(Date date) {returnLONG_DATE_FORMAT.format(date);

}/*** 得到长日期格式字串

*

*@return

*/

public staticString getLongDateStr() {return LONG_DATE_FORMAT.format(newDate());

}public staticString getLongDateStr(Timestamp time) {returnLONG_DATE_FORMAT.format(time);

}/*** 得到短日期格式字串

*

*@paramdate

*@return

*/

public staticString getShortDateStr(Date date) {returnSHORT_DATE_FORMAT.format(date);

}public staticString getShortDateStr() {return SHORT_DATE_FORMAT.format(newDate());

}/*** 计算 second 秒后的时间

*

*@paramdate

*@paramsecond

*@return

*/

public static Date addSecond(Date date, intsecond) {

Calendar calendar=Calendar.getInstance();

calendar.setTime(date);

;

calendar.add(Calendar.SECOND, second);returncalendar.getTime();

}/*** 计算 minute 分钟后的时间

*

*@paramdate

*@paramminute

*@return

*/

public static Date addMinute(Date date, intminute) {

Calendar calendar=Calendar.getInstance();

calendar.setTime(date);

calendar.add(Calendar.MINUTE, minute);returncalendar.getTime();

}/*** 计算 hour 小时后的时间

*

*@paramdate

*@paramminute

*@return

*/

public static Date addHour(Date date, inthour) {

Calendar calendar=Calendar.getInstance();

calendar.setTime(date);

calendar.add(Calendar.HOUR, hour);returncalendar.getTime();

}/*** 得到day的起始时间点。

*

*@paramdate

*@return

*/

public staticDate getDayStart(Date date) {

Calendar calendar=Calendar.getInstance();

calendar.setTime(date);

calendar.set(Calendar.HOUR_OF_DAY,0);

calendar.set(Calendar.MINUTE,0);

calendar.set(Calendar.SECOND,0);

calendar.set(Calendar.MILLISECOND,0);returncalendar.getTime();

}/*** 得到day的终止时间点.

*

*@paramdate

*@return

*/

public staticDate getDayEnd(Date date) {

Calendar calendar=Calendar.getInstance();

calendar.setTime(date);

calendar.set(Calendar.HOUR_OF_DAY,0);

calendar.set(Calendar.MINUTE,0);

calendar.set(Calendar.SECOND,0);

calendar.set(Calendar.MILLISECOND,0);

calendar.add(Calendar.DAY_OF_MONTH,1);

calendar.add(Calendar.MILLISECOND,-1);returncalendar.getTime();

}/*** 计算 day 天后的时间

*

*@paramdate

*@paramday

*@return

*/

public static Date addDay(Date date, intday) {

Calendar calendar=Calendar.getInstance();

calendar.setTime(date);

calendar.add(Calendar.DAY_OF_MONTH, day);returncalendar.getTime();

}/*** 得到month的终止时间点.

*

*@paramdate

*@return

*/

public staticDate getMonthEnd(Date date) {

Calendar calendar=Calendar.getInstance();

calendar.setTime(date);

calendar.set(Calendar.DAY_OF_MONTH,1);

calendar.set(Calendar.HOUR_OF_DAY,0);

calendar.set(Calendar.MINUTE,0);

calendar.set(Calendar.SECOND,0);

calendar.set(Calendar.MILLISECOND,0);

calendar.add(Calendar.MONTH,1);

calendar.add(Calendar.MILLISECOND,-1);returncalendar.getTime();

}public static Date addYear(Date date, intyear) {

Calendar calendar=Calendar.getInstance();

calendar.setTime(date);

calendar.add(Calendar.DAY_OF_YEAR,365 *year);returncalendar.getTime();

}public staticTimestamp strToTimestamp(String dateStr) {returnTimestamp.valueOf(dateStr);

}public staticTimestamp strToTimestamp(Date date) {returnTimestamp.valueOf(formatTimestamp.format(date));

}public staticTimestamp getCurTimestamp() {return Timestamp.valueOf(formatTimestamp.format(newDate()));

}/*** 取得两个日期之间的日数

*

*@returnt1到t2间的日数,如果t2 在 t1之后,返回正数,否则返回负数*/

public static longdaysBetween(java.sql.Timestamp t1, java.sql.Timestamp t2) {return (t2.getTime() - t1.getTime()) /DAY_MILLI;

}/*** 返回java.sql.Timestamp型的SYSDATE

*

*@returnjava.sql.Timestamp型的SYSDATE

* @history

*@since1.0*/

public staticjava.sql.Timestamp getSysDateTimestamp() {return newjava.sql.Timestamp(System.currentTimeMillis());

}/*** 利用缺省的Date格式(YYYY/MM/DD)转换String到java.sql.Timestamp

*

*@paramsDate Date string

*@return* @history

*@since1.0*/

public staticjava.sql.Timestamp toSqlTimestamp(String sDate) {if (sDate == null) {return null;

}if (sDate.length() !=DateUtils.DATE_FORMAT_DATEONLY.length()&& sDate.length() !=DateUtils.DATE_FORMAT_DATETIME.length()) {return null;

}returntoSqlTimestamp(sDate,

sDate.length()==DateUtils.DATE_FORMAT_DATEONLY.length()?DateUtils.DATE_FORMAT_DATEONLY

: DateUtils.DATE_FORMAT_DATETIME);

}/*** 利用缺省的Date格式(YYYY/MM/DD hh:mm:ss)转化String到java.sql.Timestamp

*

*@paramsDate Date string

*@paramsFmt Date format DATE_FORMAT_DATEONLY/DATE_FORMAT_DATETIME

*@return* @history

*@since1.0*/

public staticjava.sql.Timestamp toSqlTimestamp(String sDate, String sFmt) {

String temp= null;if (sDate == null || sFmt == null) {return null;

}if (sDate.length() !=sFmt.length()) {return null;

}if(sFmt.equals(DateUtils.DATE_FORMAT_DATETIME)) {

temp= sDate.replace('/', '-');

temp= temp + ".000000000";

}else if(sFmt.equals(DateUtils.DATE_FORMAT_DATEONLY)) {

temp= sDate.replace('/', '-');

temp= temp + " 00:00:00.000000000";

}else{return null;

}returnjava.sql.Timestamp.valueOf(temp);

}/*** 以YYYY/MM/DD HH24:MI:SS格式返回系统日期时间

*

*@return系统日期时间

* @history

*@since1.0*/

public staticString getSysDateTimeString() {return toString(newjava.util.Date(System.currentTimeMillis()), DateUtils.sdfDateTime);

}/*** 根据指定的Format转化java.util.Date到String

*

*@paramdt java.util.Date instance

*@paramsFmt Date format , DATE_FORMAT_DATEONLY or DATE_FORMAT_DATETIME

*@return* @history

*@since1.0*/

public staticString toString(java.util.Date dt, String sFmt) {if (dt == null || sFmt == null || "".equals(sFmt)) {return "";

}return toString(dt, newSimpleDateFormat(sFmt));

}/*** 利用指定SimpleDateFormat instance转换java.util.Date到String

*

*@paramdt java.util.Date instance

*@paramformatter SimpleDateFormat Instance

*@return* @history

*@since1.0*/

private staticString toString(java.util.Date dt, SimpleDateFormat formatter) {

String sRet= null;try{

sRet=formatter.format(dt).toString();

}catch(Exception e) {

logger.error(e);

sRet= null;

}returnsRet;

}/*** 转换java.sql.Timestamp到String,格式为YYYY/MM/DD HH24:MI

*

*@paramdt java.sql.Timestamp instance

*@return* @history

*@since1.0*/

public staticString toSqlTimestampString2(java.sql.Timestamp dt) {if (dt == null) {return null;

}

String temp=toSqlTimestampString(dt, DateUtils.DATE_FORMAT_DATETIME);return temp.substring(0, 16);

}public staticString toString(java.sql.Timestamp dt) {return dt == null ? "": toSqlTimestampString2(dt);

}/*** 根据指定的格式转换java.sql.Timestamp到String

*

*@paramdt java.sql.Timestamp instance

*@paramsFmt Date 格式,DATE_FORMAT_DATEONLY/DATE_FORMAT_DATETIME/

* DATE_FORMAT_SESSION

*@return* @history

*@since1.0*/

public staticString toSqlTimestampString(java.sql.Timestamp dt, String sFmt) {

String temp= null;

String out= null;if (dt == null || sFmt == null) {return null;

}

temp=dt.toString();if (sFmt.equals(DateUtils.DATE_FORMAT_DATETIME) || //"YYYY/MM/DD//HH24:MI:SS"

sFmt.equals(DateUtils.DATE_FORMAT_DATEONLY)) { //YYYY/MM/DD

temp = temp.substring(0, sFmt.length());

out= temp.replace('/', '-');//}else if( sFmt.equals (DateUtils.DATE_FORMAT_SESSION ) ){// //Session//out =//temp.substring(0,4)+temp.substring(5,7)+temp.substring(8,10);//out += temp.substring(12,14) + temp.substring(15,17);

}returnout;

}//得到当前日期的星期

public static intgetWeek() {

Calendar cal=Calendar.getInstance();

cal.setTime(newDate());int w =cal.get(Calendar.DAY_OF_WEEK);returnw;

}/*** Timestamp 格式转换成yyyy-MM-dd timestampToSql(Timestamp 格式转换成yyyy-MM-dd)

*

*@paramtimestamp 时间

*@returncreateTimeStr yyyy-MM-dd 时间

* @Exception 异常对象

*@sinceV1.0*/

public staticString timestampToStringYMD(java.sql.Timestamp timestamp) {

SimpleDateFormat sdf= newSimpleDateFormat(DateUtils.DATE_FORMAT_DATEONLY);

String createTimeStr=sdf.format(timestamp);returncreateTimeStr;

}/*** 判断一个时间是否在某个时间区间内

*

*@paramnow 目标时间

*@paramstart 时间区间开始

*@paramend 时间区间结束

*@parammodel 区间模式

*@return是否在区间内*/

public static boolean isBetween(Date now, Date start, Date end, intmodel) {returnisBetween(now, start, end, model, LEFT_OPEN_RIGHT_OPEN);

}/*** 判断时间是否在制定的时间段之类

*

*@paramdate 需要判断的时间

*@paramstart 时间段的起始时间

*@paramend 时间段的截止时间

*@paraminterModel 区间的模式

*

*

 
 

* 取值:

* LEFT_OPEN_RIGHT_OPEN

* LEFT_CLOSE_RIGHT_OPEN

* LEFT_OPEN_RIGHT_CLOSE

* LEFT_CLOSE_RIGHT_CLOSE

*

*@paramcompModel 比较的模式

*

*

 
 

* 取值:

* COMP_MODEL_DATE 只比较日期,不比较时间

* COMP_MODEL_TIME 只比较时间,不比较日期

* COMP_MODEL_DATETIME 比较日期,也比较时间

*

*@return

*/

public static boolean isBetween(Date date, Date start, Date end, int interModel, intcompModel) {if (date == null || start == null || end == null) {throw new IllegalArgumentException("日期不能为空");

}

SimpleDateFormat format= null;switch(compModel) {caseCOMP_MODEL_DATE: {

format= new SimpleDateFormat("yyyyMMdd");break;

}caseCOMP_MODEL_TIME: {

format= new SimpleDateFormat("HHmmss");break;

}caseCOMP_MODEL_DATETIME: {

format= new SimpleDateFormat("yyyyMMddHHmmss");break;

}default: {throw new IllegalArgumentException(String.format("日期的比较模式[%d]有误", compModel));

}

}long dateNumber =Long.parseLong(format.format(date));long startNumber =Long.parseLong(format.format(start));long endNumber =Long.parseLong(format.format(end));switch(interModel) {caseLEFT_OPEN_RIGHT_OPEN: {if (dateNumber <= startNumber || dateNumber >=endNumber) {return false;

}else{return true;

}

}caseLEFT_CLOSE_RIGHT_OPEN: {if (dateNumber < startNumber || dateNumber >=endNumber) {return false;

}else{return true;

}

}caseLEFT_OPEN_RIGHT_CLOSE: {if (dateNumber <= startNumber || dateNumber >endNumber) {return false;

}else{return true;

}

}caseLEFT_CLOSE_RIGHT_CLOSE: {if (dateNumber < startNumber || dateNumber >endNumber) {return false;

}else{return true;

}

}default: {throw new IllegalArgumentException(String.format("日期的区间模式[%d]有误", interModel));

}

}

}/*** 得到当前周起始时间

*

*@paramdate

*@return

*/

public staticDate getWeekStart(Date date) {

Calendar calendar=Calendar.getInstance();

calendar.setTime(date);

calendar.get(Calendar.WEEK_OF_YEAR);int firstDay =calendar.getFirstDayOfWeek();

calendar.set(Calendar.DAY_OF_WEEK, firstDay);

calendar.set(Calendar.HOUR_OF_DAY,0);

calendar.set(Calendar.MINUTE,0);

calendar.set(Calendar.SECOND,0);

calendar.set(Calendar.MILLISECOND,0);returncalendar.getTime();

}/*** 得到当前周截止时间

*

*@paramdate

*@return

*/

public staticDate getWeekEnd(Date date) {

Calendar calendar=Calendar.getInstance();

calendar.setTime(date);

calendar.get(Calendar.WEEK_OF_YEAR);int firstDay =calendar.getFirstDayOfWeek();

calendar.set(Calendar.DAY_OF_WEEK,8 -firstDay);

calendar.set(Calendar.HOUR_OF_DAY,23);

calendar.set(Calendar.MINUTE,59);

calendar.set(Calendar.SECOND,59);

calendar.set(Calendar.MILLISECOND,0);returncalendar.getTime();

}/*** 得到当月起始时间

*

*@paramdate

*@return

*/

public staticDate getMonthStart(Date date) {

Calendar calendar=Calendar.getInstance();

calendar.setTime(date);

calendar.set(Calendar.DAY_OF_MONTH,1);

calendar.set(Calendar.HOUR_OF_DAY,0);

calendar.set(Calendar.MINUTE,0);

calendar.set(Calendar.SECOND,0);

calendar.set(Calendar.MILLISECOND,0);returncalendar.getTime();

}/*** 得到当前年起始时间

*

*@paramdate

*@return

*/

public staticDate getYearStart(Date date) {

Calendar calendar=Calendar.getInstance();

calendar.setTime(date);

calendar.set(Calendar.YEAR, calendar.get(Calendar.YEAR));

calendar.set(Calendar.MONTH,0);

calendar.set(Calendar.DAY_OF_MONTH,1);

calendar.set(Calendar.HOUR_OF_DAY,0);

calendar.set(Calendar.MINUTE,0);

calendar.set(Calendar.SECOND,0);

calendar.set(Calendar.MILLISECOND,0);returncalendar.getTime();

}/*** 得到当前年最后一天

*

*@paramdate

*@return

*/

public staticDate getYearEnd(Date date) {

Calendar calendar=Calendar.getInstance();

calendar.setTime(date);

calendar.set(Calendar.YEAR, calendar.get(Calendar.YEAR));

calendar.set(Calendar.MONTH,11);

calendar.set(Calendar.DAY_OF_MONTH,31);

calendar.set(Calendar.HOUR_OF_DAY,23);

calendar.set(Calendar.MINUTE,59);

calendar.set(Calendar.SECOND,59);

calendar.set(Calendar.MILLISECOND,0);returncalendar.getTime();

}/*** 取得月天数

*

*@paramdate

*@return

*/

public static intgetDayOfMonth(Date date) {

Calendar c=Calendar.getInstance();

c.setTime(date);returnc.getActualMaximum(Calendar.DAY_OF_MONTH);

}/*** 取得月第一天

*

*@paramdate

*@return

*/

public staticDate getFirstDateOfMonth(Date date) {

Calendar c=Calendar.getInstance();

c.setTime(date);

c.set(Calendar.DAY_OF_MONTH, c.getActualMinimum(Calendar.DAY_OF_MONTH));returnc.getTime();

}/*** 取得月最后一天

*

*@paramdate

*@return

*/

public staticDate getLastDateOfMonth(Date date) {

Calendar c=Calendar.getInstance();

c.setTime(date);

c.set(Calendar.DAY_OF_MONTH, c.getActualMaximum(Calendar.DAY_OF_MONTH));returnc.getTime();

}/*** 取得季度第一天

*

*@paramdate

*@return

*/

public staticDate getSeasonStart(Date date) {return getDayStart(getFirstDateOfMonth(getSeasonDate(date)[0]));

}/*** 取得季度最后一天

*

*@paramdate

*@return

*/

public staticDate getSeasonEnd(Date date) {return getDayEnd(getLastDateOfMonth(getSeasonDate(date)[2]));

}/*** 取得季度月

*

*@paramdate

*@return

*/

public staticDate[] getSeasonDate(Date date) {

Date[] season= new Date[3];

Calendar c=Calendar.getInstance();

c.setTime(date);int nSeason =getSeason(date);if (nSeason == 1) {//第一季度

c.set(Calendar.MONTH, Calendar.JANUARY);

season[0] =c.getTime();

c.set(Calendar.MONTH, Calendar.FEBRUARY);

season[1] =c.getTime();

c.set(Calendar.MONTH, Calendar.MARCH);

season[2] =c.getTime();

}else if (nSeason == 2) {//第二季度

c.set(Calendar.MONTH, Calendar.APRIL);

season[0] =c.getTime();

c.set(Calendar.MONTH, Calendar.MAY);

season[1] =c.getTime();

c.set(Calendar.MONTH, Calendar.JUNE);

season[2] =c.getTime();

}else if (nSeason == 3) {//第三季度

c.set(Calendar.MONTH, Calendar.JULY);

season[0] =c.getTime();

c.set(Calendar.MONTH, Calendar.AUGUST);

season[1] =c.getTime();

c.set(Calendar.MONTH, Calendar.SEPTEMBER);

season[2] =c.getTime();

}else if (nSeason == 4) {//第四季度

c.set(Calendar.MONTH, Calendar.OCTOBER);

season[0] =c.getTime();

c.set(Calendar.MONTH, Calendar.NOVEMBER);

season[1] =c.getTime();

c.set(Calendar.MONTH, Calendar.DECEMBER);

season[2] =c.getTime();

}returnseason;

}/*** 1 第一季度 2 第二季度 3 第三季度 4 第四季度

*

*@paramdate

*@return

*/

public static intgetSeason(Date date) {int season = 0;

Calendar c=Calendar.getInstance();

c.setTime(date);int month =c.get(Calendar.MONTH);switch(month) {caseCalendar.JANUARY:caseCalendar.FEBRUARY:caseCalendar.MARCH:

season= 1;break;caseCalendar.APRIL:caseCalendar.MAY:caseCalendar.JUNE:

season= 2;break;caseCalendar.JULY:caseCalendar.AUGUST:caseCalendar.SEPTEMBER:

season= 3;break;caseCalendar.OCTOBER:caseCalendar.NOVEMBER:caseCalendar.DECEMBER:

season= 4;break;default:break;

}returnseason;

}public static intgetWeekOfYear(Date date) {

Calendar calendar=Calendar.getInstance();

calendar.setFirstDayOfWeek(Calendar.MONDAY);

calendar.setTime(date);returncalendar.get(Calendar.WEEK_OF_YEAR);

}public static intgetMonthOfYear(Date date) {

Calendar calendar=Calendar.getInstance();

calendar.setFirstDayOfWeek(Calendar.MONDAY);

calendar.setTime(date);returncalendar.get(Calendar.WEEK_OF_MONTH);

}/*** 字符串转date

*

*@paramdateString

*@return

*/

public staticDate StringToDate(String dateString) {

SimpleDateFormat sdf= new SimpleDateFormat("yyyy/MM/dd");

Date date= null;try{

date=sdf.parse(dateString);

}catch(ParseException e) {

logger.error(e);

}returndate;

}/*** 判断输入日期是一个星期中的第几天(星期天为一个星期第一天)

*

*@paramdate

*@return

*/

public static intgetWeekIndex(Date date) {

Calendar calendar=Calendar.getInstance();

calendar.setTime(date);returncalendar.get(Calendar.DAY_OF_WEEK);

}/*** 当前时间的前几天,并且以例如2013/12/09 00:00:00 形式输出*/

public static Date subDays(intdays) {

Date date= addDay(new Date(), -days);

String dateStr=getReqDate(date);

Date date1= null;

SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");try{

date1=sdf.parse(dateStr);

}catch(ParseException e) {

logger.error(e);

}returndate1;

}/*** 判断开始时间和结束时间,是否超出了当前时间的一定的间隔数限制 如:开始时间和结束时间,不能超出距离当前时间90天

*

*@paramstartDate 开始时间

*@paramendDate 结束时间按

*@paraminterval 间隔数

*@paramdateUnit 单位(如:月,日),参照Calendar的时间单位

*@return

*/

public static boolean isOverIntervalLimit(Date startDate, Date endDate, int interval, intdateUnit) {

Calendar cal=Calendar.getInstance();

cal.setTime(newDate());

cal.add(dateUnit, interval* (-1));

Date curDate=getDayStart(cal.getTime());if (getDayStart(startDate).compareTo(curDate) < 0 || getDayStart(endDate).compareTo(curDate) < 0) {return true;

}return false;

}/*** 判断开始时间和结束时间,是否超出了当前时间的一定的间隔数限制, 时间单位默认为天数 如:开始时间和结束时间,不能超出距离当前时间90天

*

*@paramstartDate 开始时间

*@paramendDate 结束时间按

*@paraminterval 间隔数

*@return

*/

public static boolean isOverIntervalLimit(Date startDate, Date endDate, intinterval) {

Calendar cal=Calendar.getInstance();

cal.setTime(newDate());

cal.add(Calendar.DAY_OF_MONTH, interval* (-1));

Date curDate=getDayStart(cal.getTime());if (getDayStart(startDate).compareTo(curDate) < 0 || getDayStart(endDate).compareTo(curDate) < 0) {return true;

}return false;

}/*** 判断开始时间和结束时间,是否超出了当前时间的一定的间隔数限制, 时间单位默认为天数 如:开始时间和结束时间,不能超出距离当前时间90天

*

*@paramstartDate 开始时间

*@paramendDate 结束时间按

*@paraminterval 间隔数

*@return

*/

public static boolean isOverIntervalLimit(String startDateStr, String endDateStr, intinterval) {

Date startDate= null;

Date endDate= null;try{

startDate=DateUtils.parseDate(startDateStr, DateUtils.DATE_FORMAT_DATEONLY);

endDate=DateUtils.parseDate(endDateStr, DateUtils.DATE_FORMAT_DATEONLY);

}catch(ParseException e) {

logger.error(e);return false;

}returnisOverIntervalLimit(startDate, endDate, interval);

}/*** 传入时间字符串及时间格式,返回对应的Date对象

*

*@paramsrc 时间字符串

*@parampattern 时间格式

*@returnDate*/

public staticjava.util.Date getDateFromString(String src, String pattern) {

SimpleDateFormat f= newSimpleDateFormat(pattern);try{returnf.parse(src);

}catch(ParseException e) {return null;

}

}/*** 取季度

*

*@paramdate

*@return

*/@SuppressWarnings("deprecation")public static intgetQuarter(Date date) {if (date.getMonth() == 0 || date.getMonth() == 1 || date.getMonth() == 2) {return 1;

}else if (date.getMonth() == 3 || date.getMonth() == 4 || date.getMonth() == 5) {return 2;

}else if (date.getMonth() == 6 || date.getMonth() == 7 || date.getMonth() == 8) {return 3;

}else if (date.getMonth() == 9 || date.getMonth() == 10 || date.getMonth() == 11) {return 4;

}else{return 0;

}

}/*** 取得通用日期时间格式字符串

*

*@paramDate

*@returnString*/

public staticString formatDate(Date date) {if (date == null) {return "";

}

SimpleDateFormat dateFormat= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");returndateFormat.format(date);

}/*** 获取当日的日期格式串

*

*@param*@returnString*/

public staticString today() {return formatDate(new Date(), "yyyy-MM-dd");

}/*** 获取当前时间格式串

*

*@param*@returnString*/

public staticString currentTime() {return formatDate(new Date(), "yyyyMMddhhmmssSSS");

}/*** 取得指定日期格式的字符串

*

*@paramDate

*@returnString*/

public staticString formatDate(Date date, String format) {

SimpleDateFormat dateFormat= newSimpleDateFormat(format);returndateFormat.format(date);

}/*** 获取昨日的日期格式串

*

*@returnDate*/

public staticString getYesterday() {

Calendar calendar=Calendar.getInstance();

calendar.add(Calendar.DATE,-1);return formatDate(calendar.getTime(), "yyyy-MM-dd");

}/*** 判断当前时间是否在一定的时间范围内

*

*@paramString

*@returnboolean*/

public static booleanisInBetweenTimes(String startTime, String endTime) {

Date nowTime= newDate();

SimpleDateFormat sdf= new SimpleDateFormat("HH:mm:ss");

String time=sdf.format(nowTime);if (time.compareTo(startTime) >= 0 && time.compareTo(endTime) <= 0) {return true;

}else{return false;

}

}/*** 字符转日期

*

*@paramdateStr

*@return

*/

public staticDate getDateByStr(String dateStr) {

SimpleDateFormat formatter= null;if (dateStr == null) {return null;

}else if (dateStr.length() == 10) {

formatter= new SimpleDateFormat("yyyy-MM-dd");

}else if (dateStr.length() == 16) {

formatter= new SimpleDateFormat("yyyy-MM-dd HH:mm");

}else if (dateStr.length() == 19) {

formatter= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

}else if (dateStr.length() > 19) {

dateStr= dateStr.substring(0, 19);

formatter= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

}else{return null;

}try{returnformatter.parse(dateStr);

}catch(ParseException e) {

logger.error(e);return null;

}

}/*** 根据传入的数字,输出相比现在days天的数据

*

*@paramdays

*@returnDate*/

public static Date getDate(intdays) {

Calendar calendar=Calendar.getInstance();

calendar.add(Calendar.DATE, days);returncalendar.getTime();

}/*** 日期最大时间

*

*@paramdt

*@return

*/

public staticDate getMaxTime(Date dt) {

Date dt1= null;

Calendar ca=Calendar.getInstance();

ca.setTime(dt);

ca.add(Calendar.DAY_OF_MONTH,1);

dt1=ca.getTime();

dt1=DateUtils.getMinTime(dt1);

ca.setTime(dt1);

ca.add(Calendar.SECOND,-1);

dt1=ca.getTime();returndt1;

}/*** 日期最小时间

*

*@paramdt

*@return

*/

public staticDate getMinTime(Date dt) {

Date dt1= null;

dt1= DateUtils.getDateByStr(DateUtils.formatDate(dt, "yyyy-MM-dd"));returndt1;

}/*** 月的最后一天

*

*@paramsDate1

*@return

*/@SuppressWarnings("deprecation")public staticDate getLastDayOfMonth(Date date) {

Calendar cDay1=Calendar.getInstance();

cDay1.setTime(date);int lastDay =cDay1.getActualMaximum(Calendar.DAY_OF_MONTH);

Date lastDate=cDay1.getTime();

lastDate.setDate(lastDay);returnlastDate;

}/*** 月的第一天

*

*@paramdate

*@return

*/

public staticDate getFirstDayOfMonth(Date date) {

Calendar calendar=Calendar.getInstance();

calendar.setTime(date);

calendar.set(Calendar.DATE, calendar.getActualMinimum(Calendar.DATE));returncalendar.getTime();

}/*** 上月第一天

*

*@return

*/

public staticDate getPreviousMonthFirstDay() {

Calendar lastDate=Calendar.getInstance();

lastDate.set(Calendar.DATE,1);//设为当前月的1号

lastDate.add(Calendar.MONTH, -1);//减一个月,变为下月的1号

returngetMinTime(lastDate.getTime());

}/*** 上月最后一天

*

*@return

*/

public staticDate getPreviousMonthLastDay() {

Calendar lastDate=Calendar.getInstance();

lastDate.set(Calendar.DATE,1);//设为当前月的1号

lastDate.add(Calendar.DATE, -1);returngetMinTime(lastDate.getTime());

}/*** 两个日期相关天数

*

*@paramstartDate

*@paramendDate

*@return

*/

public static longgetDateDiff(String startDate, String endDate) {long diff = 0;try{

Date date1= new SimpleDateFormat("yyyy-MM-dd").parse(startDate);

Date date2= new SimpleDateFormat("yyyy-MM-dd").parse(endDate);

diff= (date1.getTime() - date2.getTime()) / (24 * 60 * 60 * 1000) > 0 ? (date1.getTime() -date2.getTime())/ (24 * 60 * 60 * 1000)

: (date2.getTime()- date1.getTime()) / (24 * 60 * 60 * 1000);

}catch(ParseException e) {

}returndiff;

}public static longgetDateDiff(Date date1, Date date2) {if (ValidateUtils.isEmpty(date1) ||ValidateUtils.isEmpty(date1)) {return 0L;

}long diff = (date1.getTime() - date2.getTime()) / (24 * 60 * 60 * 1000) > 0 ? (date1.getTime() -date2

.getTime())/ (24 * 60 * 60 * 1000) : (date2.getTime() - date1.getTime()) / (24 * 60 * 60 * 1000);returndiff;

}/** 判断两个时间是不是在一个周中*/

public static booleanisSameWeekWithToday(Date date) {if (date == null) {return false;

}//0.先把Date类型的对象转换Calendar类型的对象

Calendar todayCal =Calendar.getInstance();

Calendar dateCal=Calendar.getInstance();

todayCal.setTime(newDate());

dateCal.setTime(date);int subYear = todayCal.get(Calendar.YEAR) -dateCal.get(Calendar.YEAR);//subYear==0,说明是同一年

if (subYear == 0) {if (todayCal.get(Calendar.WEEK_OF_YEAR) ==dateCal.get(Calendar.WEEK_OF_YEAR))return true;

}else if (subYear == 1 && dateCal.get(Calendar.MONTH) == 11 && todayCal.get(Calendar.MONTH) == 0) {if (todayCal.get(Calendar.WEEK_OF_YEAR) ==dateCal.get(Calendar.WEEK_OF_YEAR))return true;

}else if (subYear == -1 && todayCal.get(Calendar.MONTH) == 11 && dateCal.get(Calendar.MONTH) == 0) {if (todayCal.get(Calendar.WEEK_OF_YEAR) ==dateCal.get(Calendar.WEEK_OF_YEAR))return true;

}return false;

}/*** getStrFormTime:

*

*@paramform 格式时间

*@paramdate 时间

*@return

*/

public staticString getStrFormTime(String form, Date date) {

SimpleDateFormat sdf= newSimpleDateFormat(form);returnsdf.format(date);

}/*** 获取几天内日期 return 2014-5-4、2014-5-3*/

public static List getLastDays(intcountDay) {

List listDate = new ArrayList();for (int i = 0; i < countDay; i++) {

listDate.add(DateUtils.getReqDateyyyyMMdd(DateUtils.getDate(-i)));

}returnlistDate;

}/*** 对时间进行格式化

*

*@paramdate

*@return

*/

public staticDate dateFormat(Date date) {

SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");

Date value= newDate();try{

value=sdf.parse(sdf.format(date));

}catch(ParseException e) {

e.printStackTrace();

}returnvalue;

}public static voidmain(String[] args) {

Date date3= DateUtils.addMinutes(new Date(), 5);

System.out.println(new Date().after(DateUtils.addMinute(new Date(), -10)));

Date date1= DateUtils.addMinutes(new Date(), -1);

Date date2= DateUtils.addMinutes(date1, 5);

System.out.println(date1);

System.out.println(date2);

System.out.println(DateUtils.isBetween(newDate(), date1, date2, DateUtils.COMP_MODEL_TIME));

Integer a= 1;int b = 1;

System.out.println(a==b);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
package com.hexiang.utils; /** * @(#)DateUtil.java * * * @author kidd * @version 1.00 2007/8/8 */ import java.util.*; import java.text.*; import java.sql.Timestamp; public class DateUtils { /** * 时间范围:年 */ public static final int YEAR = 1; /** * 时间范围:季度 */ public static final int QUARTER = 2; /** * 时间范围:月 */ public static final int MONTH = 3; /** * 时间范围:旬 */ public static final int TENDAYS = 4; /** * 时间范围:周 */ public static final int WEEK = 5; /** * 时间范围:日 */ public static final int DAY = 6; /* 基准时间 */ private Date fiducialDate = null; private Calendar cal = null; private DateUtils(Date fiducialDate) { if (fiducialDate != null) { this.fiducialDate = fiducialDate; } else { this.fiducialDate = new Date(System.currentTimeMillis()); } this.cal = Calendar.getInstance(); this.cal.setTime(this.fiducialDate); this.cal.set(Calendar.HOUR_OF_DAY, 0); this.cal.set(Calendar.MINUTE, 0); this.cal.set(Calendar.SECOND, 0); this.cal.set(Calendar.MILLISECOND, 0); this.fiducialDate = this.cal.getTime(); } /** * 获取DateHelper实例 * * @param fiducialDate * 基准时间 * @return Date */ public static DateUtils getInstance(Date fiducialDate) { return new DateUtils(fiducialDate); } /** * 获取DateHelper实例, 使用当前时间作为基准时间 * * @return Date */ public static DateUtils getInstance() { return new DateUtils(null); } /** * 获取年的第一天 * * @param offset * 偏移量 * @return Date */ public Date getFirstDayOfYear(int offset) { cal.setTime(this.fiducialDate); cal.set(Calendar.YEAR, cal.get(Calendar.YEAR) + offset); cal.set(Calendar.MONTH, Calendar.JANUARY); cal.set(Calendar.DAY_OF_MONTH, 1); return cal.getTime(); } /** * 获取年的最后一天 * * @param offset * 偏移量 * @return Date */ public Date getLastDayOfYear(int offset) { cal.setTime(this.fiducialDate); cal.set(Calendar.YEAR, cal.get(Calendar.YEAR) + offset); cal.set(Calendar.MONTH, Calendar.DECEMBER); cal.set(Calendar.DAY_OF_MONTH, 31); return cal.getTime(); } /** * 获取季度的第一天 * * @param offset * 偏移量 * @return Date */ public Date getFirstDayOfQuarter(int offset) { cal.setTime(this.fiducialDate); cal.add(Calendar.MONTH, offset * 3); int mon = cal.get(Calendar.MONTH); if (mon >= Calendar.JANUARY && mon = Calendar.APRIL && mon = Calendar.JULY && mon = Calendar.OCTOBER && mon = Calendar.JANUARY && mon = Calendar.APRIL && mon = Calendar.JULY && mon = Calendar.OCTOBER && mon = 21) { day = 21; } else if (day >= 11) { day = 11; } else { day = 1; } if (offset > 0) { day = day + 10 * offset; int monOffset = day / 30; day = day % 30; cal.add(Calendar.MONTH, monOffset); cal.set(Calendar.DAY_OF_MONTH, day); } else { int monOffset = 10 * offset / 30; int dayOffset = 10 * offset % 30; if ((day + dayOffset) > 0) { day = day + dayOffset; } else { monOffset = monOffset - 1; day = day - dayOffset - 10; } cal.add(Calendar.MONTH, monOffset); cal.set(Calendar.DAY_OF_MONTH, day); } return cal.getTime(); } /** * 获取旬的最后一天 * * @param offset * 偏移量 * @return Date */ public Date getLastDayOfTendays(int offset) { Date date = getFirstDayOfTendays(offset + 1); cal.setTime(date); cal.add(Calendar.DAY_OF_MONTH, -1); return cal.getTime(); } /** * 获取周的第一天(MONDAY) * * @param offset * 偏移量 * @return Date */ public Date getFirstDayOfWeek(int offset) { cal.setTime(this.fiducialDate); cal.add(Calendar.DAY_OF_MONTH, offset * 7); cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); return cal.getTime(); } /** * 获取周的最后一天(SUNDAY) * * @param offset * 偏移量 * @return Date */ public Date getLastDayOfWeek(int offset) { cal.setTime(this.fiducialDate); cal.add(Calendar.DAY_OF_MONTH, offset * 7); cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); cal.add(Calendar.DAY_OF_MONTH, 6); return cal.getTime(); } /** * 获取指定时间范围的第一天 * * @param dateRangeType * 时间范围类型 * @param offset * 偏移量 * @return Date */ public Date getFirstDate(int dateRangeType, int offset) { return null; } /** * 获取指定时间范围的最后一天 * * @param dateRangeType * 时间范围类型 * @param offset * 偏移量 * @return Date */ public Date getLastDate(int dateRangeType, int offset) { return null; } /** * 根据日历的规则,为基准时间添加指定日历字段的时间量 * * @param field * 日历字段, 使用Calendar类定义的日历字段常量 * @param offset * 偏移量 * @return Date */ public Date add(int field, int offset) { cal.setTime(this.fiducialDate); cal.add(field, offset); return cal.getTime(); } /** * 根据日历的规则,为基准时间添加指定日历字段的单个时间单元 * * @param field * 日历字段, 使用Calendar类定义的日历字段常量 * @param up * 指定日历字段的值的滚动方向。true:向上滚动 / false:向下滚动 * @return Date */ public Date roll(int field, boolean up) { cal.setTime(this.fiducialDate); cal.roll(field, up); return cal.getTime(); } /** * 把字符串转换为日期 * * @param dateStr * 日期字符串 * @param format * 日期格式 * @return Date */ public static Date strToDate(String dateStr, String format) { Date date = null; if (dateStr != null && (!dateStr.equals(""))) { DateFormat df = new SimpleDateFormat(format); try { date = df.parse(dateStr); } catch (ParseException e) { e.printStackTrace(); } } return date; } /** * 把字符串转换为日期日期的格式为yyyy-MM-dd HH:ss * * @param dateStr * 日期字符串 * @return Date */ public static Date strToDate(String dateStr) { Date date = null; if (dateStr != null && (!dateStr.equals(""))) { if (dateStr.matches("\\d{4}-\\d{1,2}-\\d{1,2}")) { dateStr = dateStr + " 00:00"; } else if (dateStr.matches("\\d{4}-\\d{1,2}-\\d{1,2} \\d{1,2}")) { dateStr = dateStr + ":00"; } else { System.out.println(dateStr + " 格式不正确"); return null; } DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:ss"); try { date = df.parse(dateStr); } catch (ParseException e) { e.printStackTrace(); } } return date; } /** * 把日期转换为字符串 * * @param date * 日期实例 * @param format * 日期格式 * @return Date */ public static String dateToStr(Date date, String format) { return (date == null) ? "" : new SimpleDateFormat(format).format(date); } public static String dateToStr(Date date) { return (date == null) ? "" : new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(date); } /** * 取得当前日期 年-月-日 * * @return Date */ public static String getCurrentDate() { DateFormat f = new SimpleDateFormat("yyyy-MM-dd"); return f.format(Calendar.getInstance().getTime()); } public static void main(String[] args) { DateUtils dateHelper = DateUtils.getInstance(); /* Year */ for (int i = -5; i <= 5; i++) { System.out.println("FirstDayOfYear(" + i + ") = " + dateHelper.getFirstDayOfYear(i)); System.out.println("LastDayOfYear(" + i + ") = " + dateHelper.getLastDayOfYear(i)); } /* Quarter */ for (int i = -5; i <= 5; i++) { System.out.println("FirstDayOfQuarter(" + i + ") = " + dateHelper.getFirstDayOfQuarter(i)); System.out.println("LastDayOfQuarter(" + i + ") = " + dateHelper.getLastDayOfQuarter(i)); } /* Month */ for (int i = -5; i <= 5; i++) { System.out.println("FirstDayOfMonth(" + i + ") = " + dateHelper.getFirstDayOfMonth(i)); System.out.println("LastDayOfMonth(" + i + ") = " + dateHelper.getLastDayOfMonth(i)); } /* Week */ for (int i = -5; i <= 5; i++) { System.out.println("FirstDayOfWeek(" + i + ") = " + dateHelper.getFirstDayOfWeek(i)); System.out.println("LastDayOfWeek(" + i + ") = " + dateHelper.getLastDayOfWeek(i)); } /* Tendays */ for (int i = -5; i <= 5; i++) { System.out.println("FirstDayOfTendays(" + i + ") = " + dateHelper.getFirstDayOfTendays(i)); System.out.println("LastDayOfTendays(" + i + ") = " + dateHelper.getLastDayOfTendays(i)); } } /** * 取当前日期的字符串形式,"XXXX年XX月XX日" * * @return java.lang.String */ public static String getPrintDate() { String printDate = ""; Calendar calendar = Calendar.getInstance(); calendar.setTime(new Date()); printDate += calendar.get(Calendar.YEAR) + "年"; printDate += (calendar.get(Calendar.MONTH) + 1) + "月"; printDate += calendar.get(Calendar.DATE) + "日"; return printDate; } /** * 将指定的日期字符串转化为日期对象 * * @param dateStr * 日期字符串 * @return java.util.Date */ public static Date getDate(String dateStr, String format) { if (dateStr == null) { return new Date(); } if (format == null) { format = "yyyy-MM-dd"; } SimpleDateFormat sdf = new SimpleDateFormat(format); try { Date date = sdf.parse(dateStr); return date; } catch (Exception e) { return null; } } /** * 从指定Timestamp中得到相应的日期的字符串形式 日期"XXXX-XX-XX" * * @param dateTime * @return 、String */ public static String getDateFromDateTime(Timestamp dateTime) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); return sdf.format(dateTime).toString(); } /** * 得到当前时间 return java.sql.Timestamp * * @return Timestamp */ public static Timestamp getNowTimestamp() { long curTime = System.currentTimeMillis(); return new Timestamp(curTime); } }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值