importjava.text.ParseException;importjava.text.SimpleDateFormat;importjava.util.Calendar;importjava.util.Date;importjava.util.GregorianCalendar;importorg.apache.commons.lang3.StringUtils;public classDateUtil {/*** 日期格式 年 如2009*/
public static final String DATEFORMATYEAR = "yyyy";/*** 日期格式 年 月 如 2009-02*/
public static final String DATEFORMATMONTH = "yyyy-MM";/*** 日期格式 年 月 日 如2009-02-26*/
public static final String DATEFORMATDAY = "yyyy-MM-dd";/*** 日期格式 年 月 日 时 如2009-02-26 15*/
public static final String DATEFORMATHOUR = "yyyy-MM-dd HH";/*** 日期格式 年 月 日 时 分 如2009-02-26 15:40*/
public static final String DATEFORMATMINUTE = "yyyy-MM-dd HH:mm";/*** 日期格式年 月 日 时 分 秒 如 2009-02-26 15:40:00*/
public static final String DATEFORMATSECOND = "yyyy-MM-dd HH:mm:ss";/*** 日期格式年 月 日 时 分 秒 毫秒 如2009-02-26 15:40:00 110*/
public static final String DATEFORMATMILLISECOND = "yyyy-MM-dd HH:mm:ss SSS";/*** 返回日期 根据数据库类型 str_to_date to_date 精确到秒
*
*@return
*/
public staticString str_to_date_second(String dataStr) {
String ret= "";//if (Constant.DATABASETYPE.equalsIgnoreCase("oracle")) {//Oracle数据库//ret += " to_date('" + dataStr + "','yyyy-MM-dd hh24:mi:ss') ";//} else {//MySQL数据库
ret += " str_to_date('" + dataStr + "','%Y-%m-%d %H:%i:%s') ";//}
returnret;
}/*** 返回日期 根据数据库类型 str_to_date to_date 精确到分
*
*@return
*/
public staticString str_to_date_minute(String dataStr) {
String ret= "";//if (Constant.DATABASETYPE.equalsIgnoreCase("oracle")) {//Oracle数据库//ret += " to_date('" + dataStr + "','yyyy-MM-dd hh24:mi') ";//} else {//MySQL数据库
ret += " str_to_date('" + dataStr + "','%Y-%m-%d %H:%i') ";//}
returnret;
}/*** 按指定的格式,把Date转换成String 如date为null,返回null
*
*@paramdate
* Date参数
*@paramformat
* 日期格式
*@returnString*/
public staticString format(Date date, String format) {if (date == null) {return null;
}return newSimpleDateFormat(format).format(date);
}/*** 按指定的格式,把string转换成Date 如string为空或null,返回null
*
*@paramstring
*@paramformat
*@return*@throwsParseException*/
public static Date parase(String string, String format) throwsParseException {if(StringUtils.isEmpty(string)) {return null;
}return newSimpleDateFormat(format).parse(string);
}/*** 按年月日格式,把String转换成Date 如果String为空或者null,返回null
*@paramdateString
*@return*@throwsParseException*/
public static Date string2Date(String dateString) throwsParseException {
Date dateTime= null;if (!StringUtils.isEmpty(dateString)) { //如果string时间参数不是空
final SimpleDateFormat df = new SimpleDateFormat(DATEFORMATDAY); //年月日时间格式化
Date date = null;
date= df.parse(dateString); //String转换Date
dateTime = newDate(date.getTime());
}returndateTime;
}/*** 获取当前系统时间
*
*@return
*/
public staticDate getSysDate() {
Calendar calender=Calendar.getInstance();returncalender.getTime();
}/*** 取一天的开始时间 精确到秒 如果date为null,返回null
*
*@paramdate
*@return*@throwsException*/
public staticString getDayFirstSecond(Date date) {if (date == null) {return null;
}
String str= format(date, DATEFORMATDAY) + " 00:00:00";returnstr;
}/*** 取一天的开始时间 精确到秒 如果string为"",返回null
*
*@paramstring
*@return*@throwsException*/
public staticString getDayFirstSecond(String date) {if (date.equals("")) {return null;
}
String ret= "";try{
ret=getDayFirstSecond(string2Date(date));
}catch(ParseException e) {//TODO Auto-generated catch block
e.printStackTrace();
}returnret;
}/*** 取一天的结束时间 精确到秒 如果date为null,返回null
*
*@paramdate
*@return*@throwsException*/
public staticString getDayLastSecond(Date date) {if (date == null) {return null;
}final String str = format(date, DATEFORMATDAY) + " 23:59:59";returnstr;
}/*** 取一天的结束时间 精确到秒 如果string为"",返回null
*
*@paramstring
*@return*@throwsException*/
public staticString getDayLastSecond(String date) {if (date.equals("")) {return null;
}
String ret= "";try{
ret=getDayLastSecond(string2Date(date));
}catch(ParseException e) {//TODO Auto-generated catch block
e.printStackTrace();
}returnret;
}/*** 取一天的开始时间 精确到毫秒
*
*@paramdate
*@return*@throwsException*/
public static Date getDayFirstTime(Date date) throwsException {if (date == null) {return null;
}final String str = format(date, DATEFORMATDAY) + " 00:00:00 000";returnparase(str, DATEFORMATMILLISECOND);
}/*** 取一天的结束时间 精确到毫秒
*
*@paramdate
*@return*@throwsException*/
public static Date getDayLastTime(java.util.Date date) throwsException {if (date == null) {return null;
}final String str = format(date, DATEFORMATDAY) + " 23:59:59 999";returnparase(str, DATEFORMATMILLISECOND);
}/*** 获取昨天的日期
*
*@paramstrDate
*@return*@throwsParseException
*@throwsException*/
public static Date getYestoday(String strDate) throwsParseException {if (null != strDate && strDate.length() > 0) {final GregorianCalendar cal = newGregorianCalendar();
cal.setTime(parase(strDate, DATEFORMATDAY));
cal.add(Calendar.DAY_OF_MONTH,-1);final String str =format(cal.getTime(), DATEFORMATDAY);returnparase(str, DATEFORMATDAY);
}return null;
}/*** 获取明天的日期
*
*@paramstrDate
*@return*@throwsParseException
*@throwsException*/
public static Date getTomorrow() throwsParseException {final GregorianCalendar cal = newGregorianCalendar();
cal.setTime(getSysDate());
cal.add(Calendar.DAY_OF_MONTH,1);final String str =format(cal.getTime(), DATEFORMATDAY);returnparase(str, DATEFORMATDAY);
}/*** 获取指定日期下一天的日期
*
*@paramstrDate
*@return*@throwsParseException
*@throwsException*/
public static Date getNextDay(Date someDate) throwsParseException {final Calendar ca =Calendar.getInstance();
ca.setTime(someDate);
ca.add(Calendar.DAY_OF_MONTH,1);final String str =format(ca.getTime(), DATEFORMATDAY);returnparase(str, DATEFORMATDAY);
}/*** 根据当前日期返回本月的最后一天
*
*@paramsomeDate
*@return
*/
public staticDate getLastDayOfMonth(Date someDate) {final Calendar ca =Calendar.getInstance();
ca.setTime(someDate);//someDate 为你要获取的那个月的时间
ca.set(Calendar.DAY_OF_MONTH, 1);
ca.add(Calendar.MONTH,1);
ca.add(Calendar.DAY_OF_MONTH,-1);returnca.getTime();
}/*** 得到本月最后一天的日期*/
public static Date getLastDayOfMonth(String dateStr) throwsParseException {
SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM");
Date date=sdf.parse(dateStr);
Calendar ca=Calendar.getInstance();
ca.setTime(date);
ca.set(Calendar.DAY_OF_MONTH,1);
ca.add(Calendar.MONTH,1);
ca.add(Calendar.DAY_OF_MONTH,-1);returnca.getTime();
}/*** 当前日期 yyyy-MM-dd
*
*@return
*/
public staticString getToday() {
Calendar ca=Calendar.getInstance();
String str=format(ca.getTime(), DATEFORMATDAY);returnstr;
}/*** 当前日期上个月 yyyy-MM-dd
*
*@return
*/
public staticString getLastMonthToday() {
Calendar ca=Calendar.getInstance();
ca.set(Calendar.MONTH, ca.get(Calendar.MONTH)- 1);
String str=format(ca.getTime(), DATEFORMATDAY);returnstr;
}/*** 当前日期上个星期yyyy-MM-dd
*
*@return
*/
public staticString getLastWeekToday() {
Calendar ca=Calendar.getInstance();
ca.add(Calendar.DAY_OF_MONTH,-7);
String str=format(ca.getTime(), DATEFORMATDAY);returnstr;
}/*** 当前日期 yyyy-MM-dd HH:mm:ss
*
*@return
*/
public staticString getTodayToSecond() {
Calendar ca=Calendar.getInstance();
String str=format(ca.getTime(), DATEFORMATSECOND);returnstr;
}/*** 当前日期-月 yyyy-MM-dd HH:mm:ss
*
*@return
*/
public staticString getLastMonthTodayToSecond() {
Calendar ca=Calendar.getInstance();
ca.set(Calendar.MONTH, ca.get(Calendar.MONTH)- 1);
String str=format(ca.getTime(), DATEFORMATSECOND);returnstr;
}/*** 当前日期-一周 yyyy-MM-dd HH:mm:ss
*
*@return
*/
public staticString getLastWeekTodayToSecond() {
Calendar ca=Calendar.getInstance();
ca.add(Calendar.DAY_OF_MONTH,-7);
String str=format(ca.getTime(), DATEFORMATSECOND);returnstr;
}/*** 得到本月第一天的日期*/
public staticDate getStartDayOfMonth(Date date) {
Calendar cDay=Calendar.getInstance();
cDay.setTime(date);
cDay.set(Calendar.DAY_OF_MONTH,1);returncDay.getTime();
}/*** 得到本月第一天的日期*/
public static Date getStartDayOfMonth(String dateStr) throwsParseException {
SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM");
Date date=sdf.parse(dateStr);
Calendar cDay=Calendar.getInstance();
cDay.setTime(date);
cDay.set(Calendar.DAY_OF_MONTH,1);returncDay.getTime();
}/*** 得到本月最后一天的日期*/
public staticDate getEndDayOfMonth(Date date) {
Calendar cDay=Calendar.getInstance();
cDay.setTime(date);
cDay.set(Calendar.DAY_OF_MONTH, cDay.getActualMaximum(Calendar.DAY_OF_MONTH));returncDay.getTime();
}/*** 得到本月最后一天的日期*/
public static Date getEndDayOfMonth(String dateStr) throwsParseException {
SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM");
Date date=sdf.parse(dateStr);
Calendar cDay=Calendar.getInstance();
cDay.setTime(date);
cDay.set(Calendar.DAY_OF_MONTH, cDay.getActualMaximum(Calendar.DAY_OF_MONTH));returncDay.getTime();
}/*** 得到下个月第一天的日期*/
public staticDate getStartDayOfNextMonth(Date date) {
Calendar cDay=Calendar.getInstance();
cDay.setTime(date);
cDay.add(Calendar.MONTH,+1);
cDay.set(Calendar.DAY_OF_MONTH,1);returncDay.getTime();
}/*** 得到下个月第一天的日期*/
public static Date getStartDayOfNextMonth(String dateStr) throwsParseException {
Date date=parase(dateStr, DATEFORMATMONTH);
Calendar cDay=Calendar.getInstance();
cDay.setTime(date);
cDay.add(Calendar.MONTH,+1);
cDay.set(Calendar.DAY_OF_MONTH,1);returncDay.getTime();
}/*** 获取指定日期所在周的周一*/
public staticDate getMonday(Date date) {
Calendar cDay=Calendar.getInstance();
cDay.setTime(date);
cDay.set(Calendar.DAY_OF_WEEK,2);//老外将周日定位第一天,周一取第二天
returncDay.getTime();
}/*** 获取指定日期所在周日*/
public staticDate getSunday(Date date) {
Calendar cDay=Calendar.getInstance();
cDay.setTime(date);if (Calendar.DAY_OF_WEEK == cDay.getFirstDayOfWeek()) { //如果刚好是周日,直接返回
returndate;
}else {//如果不是周日,加一周计算
cDay.add(Calendar.DAY_OF_YEAR, 7);
cDay.set(Calendar.DAY_OF_WEEK,1);returncDay.getTime();
}
}/*** 获取本年的第一天*/
public staticDate getFirstDayOfYear(Date date){
Calendar calendar=Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.DAY_OF_YEAR,1);returncalendar.getTime();
}/*** 获取本年的第一天*/
public static Date getFirstDayOfYear(String dateStr) throwsParseException{
Date date=parase(dateStr, DATEFORMATYEAR);
Calendar calendar=Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.DAY_OF_YEAR,1);returncalendar.getTime();
}/*** 获取本年的最后一天*/
public staticDate getLastDayOfYear(Date date){
Calendar calendar=Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.DAY_OF_YEAR, calendar.getActualMaximum(Calendar.DAY_OF_YEAR));returncalendar.getTime();
}/*** 获取本年的最后一天*/
public static Date getLastDayOfYear(String dateStr) throwsParseException{
Date date=parase(dateStr, DATEFORMATYEAR);
Calendar calendar=Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.DAY_OF_YEAR, calendar.getActualMaximum(Calendar.DAY_OF_YEAR));returncalendar.getTime();
}/*** 获取下一年的第一天*/
public staticDate getFirstDayOfNextYear(Date date){
Calendar calendar=Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.YEAR,+1);
calendar.set(Calendar.DAY_OF_YEAR,1);returncalendar.getTime();
}/*** 获取下一年的第一天*/
public static Date getFirstDayOfNextYear(String dateStr) throwsParseException{
Date date=parase(dateStr, DATEFORMATYEAR);
Calendar calendar=Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.YEAR,+1);
calendar.set(Calendar.DAY_OF_YEAR,1);returncalendar.getTime();
}/*** 获取昨天的日期
*
*@paramstrDate
*@return*@throwsParseException
*@throwsException*/
public static String getYestoday() throwsParseException {
Calendar calendar=Calendar.getInstance();
calendar.add(calendar.DATE,-1);
calendar.set(calendar.HOUR_OF_DAY,0);
calendar.set(calendar.MINUTE,0);returnformat(calendar.getTime(), DATEFORMATMINUTE);
}/*** 获取当前时间分钟之前 精确到分钟*/
public static String getBeforMinutesSysDate(int minute) throwsParseException{
Calendar calendar=Calendar.getInstance();
calendar.add(Calendar.MINUTE,-minute);returnformat(calendar.getTime(), DATEFORMATMINUTE);
}/*** 获取当前时间分钟之前 精确到分钟*/
public static String getMinuteSysDate() throwsParseException{
Calendar calendar=Calendar.getInstance();returnformat(calendar.getTime(), DATEFORMATMINUTE);
}}