importjava.sql.Timestamp;importjava.text.ParseException;importjava.text.SimpleDateFormat;importjava.util.Calendar;importjava.util.Date;importjava.util.Locale;importjava.util.TimeZone;/*** Date日期公共类
*
**/
public classDateUtils {/*** 返回当前日期Date类型
*
*@return
*/
public staticDate getCurDate() {return newDate();
}/*** Date日期类型转化为Timestamp类型 如果参数为空返回null
*
*@paramdate
*@return
*/
public staticTimestamp getTimestamp(Date date) {if (date == null)return null;else{return newTimestamp(date.getTime());
}
}/*** 获取当前Timestamp类型时间
*
*@return
*/
public staticTimestamp getCurTimestamp() {return new Timestamp(newDate().getTime());
}/*** 字符串日期转化为“yyy-MM-dd”格式的Date日期类型 如果字符串为null则返回null
*
*@paramdateStr
*@return
*/
public staticDate formateDate(String dateStr) {if (dateStr == null || "".equals(dateStr.trim()))return null;
SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");try{
Date date=sdf.parse(dateStr);returndate;
}catch(ParseException e) {
e.printStackTrace();
}return null;
}/*** 字符串日期去除两端空白并返回Timestamp类型日期 如果为null或者“”则返回null
*
*@paramtsStr
*@return
*/
public staticTimestamp formateTimeStamp(String tsStr) {if (tsStr == null || "".equals(tsStr.trim()))return null;try{
Timestamp ts=Timestamp.valueOf(tsStr.trim());returnts;
}catch(Exception e) {
e.printStackTrace();
}return null;
}/*** Date日期类型转化为“yyyy-MM-dd”格式的字符串日期 如果为空则返回null
*
*@paramdate
*@return
*/
public staticString getDateStr(Date date) {if (date == null)return null;
SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");
String dateStr=sdf.format(date);returndateStr;
}public staticString getTime2Str(Date date){if (date == null)return null;
SimpleDateFormat sdf= new SimpleDateFormat("HH:mm:ss");
String dateStr=sdf.format(date);returndateStr;
}/*** Timestamp日期类型转化为“yyyy-MM-dd HH:mm:ss”格式的字符串日期 如果为空则返回null
*
*@paramts
*@return
*/
public staticString getTimestampStr(Timestamp ts) {if (ts == null)return null;
SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String tsStr=sdf.format(ts);returntsStr;
}/*** Timestamp日期类型转化为“MM-dd HH:mm”格式的字符串日期 如果为空则返回null
*
*@paramts
*@return
*/
public staticString formatTimestamp2Str(Timestamp ts) {if (ts == null)return null;
SimpleDateFormat sdf= new SimpleDateFormat("MM-dd HH:mm");
String tsStr=sdf.format(ts);returntsStr;
}/*** Date日期类型转化为“MM-dd HH:mm”格式的字符串日期 如果为空则返回null
*
*@paramts
*@return
*/
public staticString formatTimestamp2Str(Date ts) {if (ts == null)return null;
SimpleDateFormat sdf= new SimpleDateFormat("MM-dd HH:mm");
String tsStr=sdf.format(ts);returntsStr;
}/*** Date日期类型转化为“yyyy-MM-dd HH:mm:ss”格式的字符串日期 如果为空则返回null
*
*@paramdate
*@return
*/
public staticString getTimestampStr(Date date) {if (date == null)return null;
SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String tsStr=sdf.format(date);returntsStr;
}/*** 返回Date日期类型的起始时间,返回类型是Timestamp并包含秒表 2014-01-21 00:00:00.0
*
*@paramdate
*@return
*/
public staticTimestamp getStartTimestampByDate(Date date) {if (date == null)return null;
Calendar c1=Calendar.getInstance();
c1.setTime(date);
c1.set(Calendar.HOUR_OF_DAY,0);
c1.set(Calendar.MINUTE,0);
c1.set(Calendar.SECOND,0);
c1.set(Calendar.MILLISECOND,0);return newTimestamp(c1.getTimeInMillis());
}/*** 返回Date日期类型的结束时间,返回类型是Timestamp并包含秒表 2014-01-21 23:59:59.999
*
*@paramdate
*@return
*/
public staticTimestamp getEndTimestampByDate(Date date) {if (date == null)return null;
Calendar c1=Calendar.getInstance();
c1.setTime(date);
c1.set(Calendar.HOUR_OF_DAY,23);
c1.set(Calendar.MINUTE,59);
c1.set(Calendar.SECOND,59);
c1.set(Calendar.MILLISECOND,999);return newTimestamp(c1.getTimeInMillis());
}/*** 日期增加 并返回Date日期类型
*
*@paramcurDate
*@paramcount
*@return
*/
public staticDate dateAdd(Date curDate, Integer count) {if (curDate == null || count == null)return null;return new Date(curDate.getTime() + count * 24 * 60 * 60 * 1000L);
}/*** 日期增加 并返回Timestamp日期类型
*
*@paramcurTimestamp
*@paramcount
*@return
*/
public staticTimestamp timeAddSecond(Timestamp curTimestamp, Integer count) {if (curTimestamp == null || count == null)return null;return new Timestamp(curTimestamp.getTime() + count * 1000);
}/*** 两个日期相差几个月
*
*@paramcurDate
*@paramoldDate
*@return
*/
public static intdateDiffMont(Date curDate, Date oldDate) {if (curDate == null || oldDate == null)return 0;if (oldDate.getTime() >=curDate.getTime()) {return 0;
}
Calendar c=Calendar.getInstance();
c.setTime(curDate);int curYear =c.get(Calendar.YEAR);int curMonth =c.get(Calendar.MONTH);
c.setTime(oldDate);int oldYear =c.get(Calendar.YEAR);int oldMonth =c.get(Calendar.MONTH);intresult;if (curYear ==oldYear) {
result= curMonth - oldMonth;//两个日期相差几个月,即月份差
} else{
result= 12 * (curYear - oldYear) + curMonth - oldMonth;//两个日期相差几个月,即月份差
}returnresult;
}/*** 判断两个日期的大小 是返回true 否则返回false
*
*@paramdate1
*@paramdate2
*@return
*/
public static booleancompare(Date date1, Date date2) {if (date1 == null || date2 == null)return false;
Calendar c1=Calendar.getInstance();
c1.setTime(date1);
c1.set(Calendar.HOUR_OF_DAY,0);
c1.set(Calendar.MINUTE,0);
c1.set(Calendar.SECOND,0);
c1.set(Calendar.MILLISECOND,0);
Calendar c2=Calendar.getInstance();
c2.setTime(date2);
c2.set(Calendar.HOUR_OF_DAY,0);
c2.set(Calendar.MINUTE,0);
c2.set(Calendar.SECOND,0);
c2.set(Calendar.MILLISECOND,0);if (c1.getTimeInMillis() >=c2.getTimeInMillis())return true;else
return false;
}/*** 返回当前日期当前月的第一天 返回类型是Timestamp 格式是“2014-01-01 00:00:00.0”
*
*@paramcurDate
*@return
*/
public staticTimestamp getFirstDayOfMonth(Date curDate) {if (curDate == null)return null;
Calendar c=Calendar.getInstance();
c.setTime(curDate);
c.set(Calendar.HOUR_OF_DAY,0);
c.set(Calendar.MINUTE,0);
c.set(Calendar.SECOND,0);
c.set(Calendar.MILLISECOND,0);
c.set(Calendar.DATE,1);//设为当前月的1号
System.out.println(newTimestamp(c.getTimeInMillis()));return newTimestamp(c.getTimeInMillis());
}/*** 返回当前日期下个月的第一天 返回类型是Timestamp 格式是“2014-02-01 00:00:00.0”
*
*@paramcurDate
*@return
*/
public staticTimestamp getFirstDayOfNextMonth(Date curDate) {if (curDate == null)return null;
Calendar c=Calendar.getInstance();
c.setTime(curDate);
c.set(Calendar.HOUR_OF_DAY,0);
c.set(Calendar.MINUTE,0);
c.set(Calendar.SECOND,0);
c.set(Calendar.MILLISECOND,0);
c.set(Calendar.DATE,1);//设为当前月的1号
c.add(Calendar.MONTH, 1);// System.out.println(newTimestamp(c.getTimeInMillis()));return newTimestamp(c.getTimeInMillis());
}/*** 返回指定年份的第一天 返回类型是Timestamp 格式是“2013-01-01 00:00:00.0”
*
*@paramyearStr
* ("参数格式:2013")
*@return
*/
public staticTimestamp getFirstDayOfYear(String yearStr) {if (yearStr == null)return null;
Calendar c=Calendar.getInstance();
c.set(Calendar.YEAR,newInteger(yearStr));
c.set(Calendar.MONTH,0); // c.set(Calendar.DATE, 1);
c.set(Calendar.HOUR_OF_DAY,0);
c.set(Calendar.MINUTE,0);
c.set(Calendar.SECOND,0);
c.set(Calendar.MILLISECOND,0);
System.out.println(newTimestamp(c.getTimeInMillis()));return newTimestamp(c.getTimeInMillis());
}/*** 返回指定年份的最后一天 返回类型是Timestamp 格式是“2013-12-31 23:59:59.999”
*
*@paramyearStr
* ("参数格式:2013")
*@return
*/
public staticTimestamp getLastDayOfYear(String yearStr) {if (yearStr == null)return null;
Calendar c=Calendar.getInstance();
c.set(Calendar.YEAR,newInteger(yearStr));
c.set(Calendar.MONTH,11); // c.set(Calendar.DATE, 31);
c.set(Calendar.HOUR_OF_DAY,23);
c.set(Calendar.MINUTE,59);
c.set(Calendar.SECOND,59);
c.set(Calendar.MILLISECOND,999);
System.out.println(newTimestamp(c.getTimeInMillis()));return newTimestamp(c.getTimeInMillis());
}/*** 返回本季度的第一天 返回类型是Timestamp 格式是“2013-10-01 00:00:00.0”
*
*@paramyearStr
* (例如参数:2013)
*@paramqurStr
* (例如第XX季度:4)
*@return
*/
public staticTimestamp getFirstDayOfQuarter(String yearStr, String qurStr) {if (yearStr == null)return null;if (qurStr == null)return null;
String qurTmp= "";if ("1".equals(qurStr))
qurTmp= "0";else if ("2".equals(qurStr))
qurTmp= "3";else if ("3".equals(qurStr))
qurTmp= "6";else if ("4".equals(qurStr))
qurTmp= "9";
Calendar c=Calendar.getInstance();
c.set(Calendar.YEAR,newInteger(yearStr));
c.set(Calendar.MONTH,new Integer(qurTmp)); // c.set(Calendar.DATE, 1);
c.set(Calendar.HOUR_OF_DAY,0);
c.set(Calendar.MINUTE,0);
c.set(Calendar.SECOND,0);
c.set(Calendar.MILLISECOND,0);
System.out.println(newTimestamp(c.getTimeInMillis()));return newTimestamp(c.getTimeInMillis());
}/*** 返回指定年、月份的第一天 返回类型是Timestamp 格式是“2013-04-01 00:00:00.0”
*
*@paramyearStr
* (例如参数:2013)
*@parammonthStr
* (例如参数:4)
*@return
*/
public staticTimestamp getFirstDayOfMonth(String yearStr, String monthStr) {if (yearStr == null)return null;if (monthStr == null)return null;
Calendar c=Calendar.getInstance();
c.set(Calendar.YEAR,newInteger(yearStr));
c.set(Calendar.MONTH,new Integer(monthStr) - 1); // c.set(Calendar.DATE, 1);
c.set(Calendar.HOUR_OF_DAY,0);
c.set(Calendar.MINUTE,0);
c.set(Calendar.SECOND,0);
c.set(Calendar.MILLISECOND,0);
System.out.println(newTimestamp(c.getTimeInMillis()));return newTimestamp(c.getTimeInMillis());
}/*** 返回当前日期的上个月的当前时间段 返回类型Timestamp 格式:”2013-12-21 12:15:45.096“
*
*@paramendTime
* (例如参数:2014-01-21)
*@return
*/
public staticTimestamp getFirstDayOfPreMonth(Timestamp endTime) {
Calendar c=Calendar.getInstance();
c.setTime(newDate(endTime.getTime()));
System.out.println(c.getTime());int y =c.get(Calendar.YEAR);int m = c.get(Calendar.MONTH) - 1;
System.out.println(y);
System.out.println(m);if (m == -1) {
y= y - 1;
m= 11;
}
c.set(Calendar.YEAR, y);
c.set(Calendar.MONTH, m);return newTimestamp(c.getTimeInMillis());
}/*** 返回上一年的第一个月的第一天 返回类型Timestamp 格式:2013-01-01 00:00:00.0
*
*@paramcurDate
*@return
*/
public staticTimestamp getPrevYearFirstDayOfMonth(Date curDate) {if (curDate == null)return null;
Calendar c=Calendar.getInstance();
c.setTime(curDate);
c.set(Calendar.HOUR_OF_DAY,0);
c.set(Calendar.MINUTE,0);
c.set(Calendar.SECOND,0);
c.set(Calendar.MILLISECOND,0);
c.set(Calendar.DATE,1);//设为当前月的1号
c.add(Calendar.YEAR, -1);// System.out.println(newTimestamp(c.getTimeInMillis()));return newTimestamp(c.getTimeInMillis());
}/*** 返回上一年的第二个月的第一天 返回类型Timestamp 格式:2013-02-01 00:00:00.0
*
*@paramcurDate
*@return
*/
public staticTimestamp getPrevYearFirstDayOfNextMonth(Date curDate) {if (curDate == null)return null;
Calendar c=Calendar.getInstance();
c.setTime(curDate);
c.set(Calendar.HOUR_OF_DAY,0);
c.set(Calendar.MINUTE,0);
c.set(Calendar.SECOND,0);
c.set(Calendar.MILLISECOND,0);
c.set(Calendar.DATE,1);//设为当前月的1号
c.add(Calendar.MONTH, 1);// c.add(Calendar.YEAR, -1);// System.out.println(newTimestamp(c.getTimeInMillis()));return newTimestamp(c.getTimeInMillis());
}/*** 返回字符串日期 返回类型:string 参数类型:Timestamp 返回格式:yyyy.MM
*
*@paramtmp
*@return
*/
public staticString cvtTimestampToStr(Timestamp tmp) {if (tmp == null)return "";
SimpleDateFormat sdf= new SimpleDateFormat("yyyy.MM");
String timeStr= sdf.format(newDate(tmp.getTime()));
System.out.println(timeStr);returntimeStr;
}/*** 返回字符串日期 返回类型:string 参数类型:Date 返回格式:yyyy.MM
*
*@paramtmp
*@return
*/
public staticString cvtDateToStr(Date tmp) {if (tmp == null)return "";
SimpleDateFormat sdf= new SimpleDateFormat("yyyy.MM");
String timeStr=sdf.format(tmp);
System.out.println(timeStr);returntimeStr;
}/*** 返回两个日期相差多少秒 返回类型Integer 参数类型:Timestamp
*
*@paramstartTime
*@paramendTime
*@return
*/
public staticInteger diffTimestamp4Second(Timestamp startTime,
Timestamp endTime) {if (startTime == null || endTime == null)return 0;
Integer diff= newLong(
(endTime.getTime()- startTime.getTime()) / 1000).intValue();returndiff;
}/*** 获取当前时间格式为yyyy-MM-dd HH:mm:ss的字符串
*@return
*/
public staticString getCurrentYYYYMMDDHHMMSS() {
SimpleDateFormat formatter= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.US);
formatter.setTimeZone(TimeZone.getTimeZone("GMT+8"));
Date currTime= newDate();
String thisTime= newString(formatter.format(currTime));returnthisTime;
}/*** 获取当前时间格式为yyyy-MM-dd HH:mm:ss的字符串
*@paraminputDate
*@return
*/
public staticString getYYYYMMDDHHMMSS(Date inputDate) {
SimpleDateFormat formatter= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.US);
formatter.setTimeZone(TimeZone.getTimeZone("GMT+8"));
String thisTime= newString(formatter.format(inputDate));returnthisTime;
}/*** 获取当前时间格式为yyyy-MM-ddHHmmssSSS的字符串
*@return
*/
public staticString getCurrentYYYYMMDDHHMMssSSS() {
SimpleDateFormat formatter= new SimpleDateFormat("yyyy-MM-ddHHmmssSSS", Locale.US);
formatter.setTimeZone(TimeZone.getTimeZone("GMT+8"));
Date currTime= newDate();
String thisTime= newString(formatter.format(currTime));returnthisTime;
}/*** 获取当前时间格式为yyyyMMddHHmmssSSS的字符串
*@return
*/
public staticString getCurrentYYYYMMDDHHMMssSSSFormat() {
SimpleDateFormat formatter= new SimpleDateFormat("yyyyMMddHHmmssSSS", Locale.US);
formatter.setTimeZone(TimeZone.getTimeZone("GMT+8"));
Date currTime= newDate();
String thisTime= newString(formatter.format(currTime));returnthisTime;
}/*** 获取当前时间格式为yyyyMMddHHmmssSSS的字符串
*@return
*/
public staticString getCurrentYYYYMMDDFormat() {
SimpleDateFormat formatter= new SimpleDateFormat("yyyyMMdd", Locale.US);
formatter.setTimeZone(TimeZone.getTimeZone("GMT+8"));
Date currTime= newDate();
String thisTime= newString(formatter.format(currTime));returnthisTime;
}/*** 获取当前时间格式为yyyy-MM-dd的字符串
*@return
*/
public staticString getCurrentYYYYMMDD() {
SimpleDateFormat formatter= new SimpleDateFormat("yyyy-MM-dd", Locale.US);
formatter.setTimeZone(TimeZone.getTimeZone("GMT+8"));
Date currTime= newDate();
String thisTime= newString(formatter.format(currTime));returnthisTime;
}/*** 获取当前时间格式为yyyyMMddHHmmss的字符串
*@return
*/
public staticString getCurrent_yyyyMMddHHmmss() {
SimpleDateFormat formatter= new SimpleDateFormat("yyyyMMddHHmmss", Locale.US);
formatter.setTimeZone(TimeZone.getTimeZone("GMT+8"));
Date currTime= newDate();
String thisTime= newString(formatter.format(currTime));returnthisTime;
}/*** yyyyMMddHHmmss转换为yyyy-MM-dd HH:mm:ss 的字符串*/
public staticString getyMdHms(String str){
StringBuffer sb=newStringBuffer();
String s=str.trim();if(!s.isEmpty()){if(s.length()>3){
sb.append(s.substring(0, 4));
}if(s.length()>5){
sb.append("-");
sb.append(s.substring(4, 6));
}if(s.length()>7){
sb.append("-");
sb.append(s.substring(6, 8));
}if(s.length()>9){
sb.append(" ");
sb.append(s.substring(8, 10));
}if(s.length()>11){
sb.append(":");
sb.append(s.substring(10, 12));
}if(s.length()>13){
sb.append(":");
sb.append(s.substring(12, 14));
}
}returnsb.toString();
}
}