java日期操作工具类(获取指定日期、日期转换、相隔天数)
本文实例为大家分享了java日期操作工具类,获取指定日期前一天、后一天;日期转换;两个日期之间相隔天数等工具类,供大家参考,具体内容如下
importjava.text.ParseException;
importjava.text.SimpleDateFormat;
importjava.util.ArrayList;
importjava.util.Calendar;
importjava.util.Date;
importjava.util.List;
publicclassDateUtil{
/**
*获得指定日期的前一天
*
*@paramspecifiedDay
*@paramformat
*@return
*@throwsException
*/
publicstaticDategetDayBefore(Datedate,Stringformat){
Calendarc=Calendar.getInstance();
c.setTime(date);
intday=c.get(Calendar.DATE);
c.set(Calendar.DATE,day-1);
StringdayBeforeStr=newSimpleDateFormat(format).format(c.getTime());
DatedayBefore=null;
try{
dayBefore=newSimpleDateFormat(format).parse(dayBeforeStr);
}catch(ParseExceptione){
e.printStackTrace();
}
returndayBefore;
}
/**
*获得指定日期的后一天
*
*@paramspecifiedDay
*@return
*/
publicstaticDategetDayAfter(Datedate,Stringformat){
Calendarc=Calendar.getInstance();
c.setTime(date);
intday=c.get(Calendar.DATE);
c.set(Calendar.DATE,day+1);
StringdayAfterStr=newSimpleDateFormat(format).format(c.getTime());
DatedayAfter=null;
try{
dayAfter=newSimpleDateFormat(format).parse(dayAfterStr);
}catch(ParseExceptione){
e.printStackTrace();
}
returndayAfter;
}
/**
*获得指定日期的前一天
*
*@paramspecifiedDay
*@paramformat
*@return
*@throwsException
*/
publicstaticStringgetSpecifiedDayBefore(StringspecifiedDay,Stringformat){
//SimpleDateFormatsimpleDateFormat=new
//SimpleDateFormat("yyyy-MM-dd");
Calendarc=Calendar.getInstance();
Datedate=null;
try{
date=newSimpleDateFormat("yy-MM-dd").parse(specifiedDay);
}catch(ParseExceptione){
e.printStackTrace();
}
c.setTime(date);
intday=c.get(Calendar.DATE);
c.set(Calendar.DATE,day-1);
StringdayBefore=newSimpleDateFormat("yyyy-MM-dd").format(c.getTime());
returndayBefore;
}
/**
*获得指定日期的后一天
*
*@paramspecifiedDay
*@return
*/
publicstaticStringgetSpecifiedDayAfter(StringspecifiedDay,Stringformat){
Calendarc=Calendar.getInstance();
Datedate=null;
try{
//date=newSimpleDateFormat("yy-MM-dd").parse(specifiedDay);
date=newSimpleDateFormat(format).parse(specifiedDay);
}catch(ParseExceptione){
e.printStackTrace();
}
c.setTime(date);
intday=c.get(Calendar.DATE);
c.set(Calendar.DATE,day+1);
//StringdayAfter=new
//SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
StringdayAfter=newSimpleDateFormat(format).format(c.getTime());
returndayAfter;
}
/**
*将date类型准成指定format格式的字符串
*
*@paramday日期
*@paramformat指定格式
*@return
*/
publicstaticStringdate2String(Dateday,Stringformat){
StringdateStr=newSimpleDateFormat(format).format(day.getTime());
returndateStr;
}
/**
*将字符串转成指定格式的date类型
*
*@paramday日期
*@paramformat指定格式
*@return
*/
publicstaticDatestring2Date(StringdateStr,Stringformat){
DatestrDate=null;
try{
strDate=newSimpleDateFormat(format).parse(dateStr);
}catch(ParseExceptione){
e.printStackTrace();
}
returnstrDate;
}
/**
*
*@Title:DateDate2CompareValue
*@Description:两个date类型比较大小
*@paramdayAfterdate类型
*@paramdatedate类型
*@param格式化
*@returnboolean
*@throws
*/
publicstaticbooleanDateDate2CompareValue(DatedayAfter,Datedate,Stringpattern){
SimpleDateFormatsdf=newSimpleDateFormat(pattern);
try{
Dated1=sdf.parse(sdf.format(dayAfter));
Dated2=sdf.parse(sdf.format(date));
if(d1.getTime()>=d2.getTime()){
returntrue;
}
}catch(ParseExceptione){
e.printStackTrace();
}
returnfalse;
}
/**
*比较两个日期年月日的大小
*@Title:DateCompareValue
*@Description:一个stirng一个date类型比较大小
*@paramdate1String类型
*@paramdate2date类型
*@param@return
*@returnboolean
*@throws
*/
publicstaticbooleanDateStrDateCompareValue(Stringdate1,Datedate,Stringpattern){
SimpleDateFormatsdf=newSimpleDateFormat(pattern);
try{
Dated1=sdf.parse(date1);
Dated2=sdf.parse(sdf.format(date));
if(d1.getTime()>=d2.getTime()){
returntrue;
}
}catch(ParseExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
returnfalse;
}
/**
*比较两个日期年月日的大小
*@Title:DateStr2CompareValue
*@Description:两个string类型比较时间大小
*@paramdate1
*@paramdate2
*@returnboolean
*@throws
*/
@SuppressWarnings("unused")
publicstaticbooleanDateStr2CompareValue(Stringdate1,Stringdate2,Stringpattern){
SimpleDateFormatsdf=newSimpleDateFormat(pattern);
try{
Dated1=sdf.parse(date1);
Dated2=sdf.parse(date2);
if(d1.getTime()>=d2.getTime()){
returntrue;
}
}catch(ParseExceptione){
e.printStackTrace();
}
returnfalse;
}
/**
*
*@Title:get2DateListDate
*@date2016年5月17日下午2:11:48
*@Description:获取时间之内的相隔天数的date集合
*@param@parampreDate开始时间
*@param@paramnextDate结束时间
*@param@paramformatfomat格式
*@param@return
*@returnList<Date>相隔天数集合
*@throws
*/
publicstaticList<Date>get2DateListDate(StringpreDate,StringnextDate,Stringformat){
List<Date>list=newArrayList<>();
if(nextDate.equals(preDate)){//开始时间结束时间相等就直接返回
list.add(DateUtil.string2Date(preDate,format));
returnlist;
}
StringnexDate=DateUtil.getSpecifiedDayAfter(preDate,format);
list.add(DateUtil.string2Date(preDate,format));
list.add(DateUtil.string2Date(nexDate,format));
while(!nexDate.equals(nextDate)){
StringnextnextDate=DateUtil.getSpecifiedDayAfter(nexDate,format);
list.add(DateUtil.string2Date(nextnextDate,format));
nexDate=nextnextDate;
}
returnlist;
}
/**
*
*@Title:get2DateListDate
*@date2016年5月17日下午2:11:48
*@Description:获取时间之内的相隔天数的string集合
*@param@parampreDate开始时间
*@param@paramnextDate结束时间
*@param@paramformatfomat格式
*@param@return
*@returnList<Date>相隔天数集合
*@throws
*/
publicstaticList<String>get2DateListDateStr(StringpreDate,StringnextDate,Stringformat){
List<String>list=newArrayList<>();
if(nextDate.equals(preDate)){//如果开始时间等于结束时间那么就是同一天
list.add(preDate);
returnlist;
}
StringnexDate=DateUtil.getSpecifiedDayAfter(preDate,format);
list.add(preDate);
list.add(nexDate);
while(!nexDate.equals(nextDate)){
StringnextnextDate=DateUtil.getSpecifiedDayAfter(nexDate,format);
list.add(nextnextDate);
nexDate=nextnextDate;
}
returnlist;
}
/**
*
*@Title:get2DateListWithDate
*@date2016年5月26日上午9:20:29
*@Description:获取两个日期之间日期的
*@param@paramstartDate开始日期date类型
*@param@paramendDate结束日期date类型
*@param@return
*@returnList<Date>datelist
*@throws
*/
publicstaticList<Date>get2DateListWithDate(DatestartDate,DateendDate,Stringformat){
List<Date>list=newArrayList<>();
if(startDate.getTime()>endDate.getTime()){
returnlist;
}
StringstartDateStr=DateUtil.date2String(startDate,format);
StringendDateStr=DateUtil.date2String(endDate,format);
if(startDateStr.equals(endDateStr)){//如果开始时间等于结束时间那么就是同一天
list.add(startDate);
returnlist;
}
DatenextDate=DateUtil.getDayAfter(startDate,format);
StringnextDateStr=DateUtil.date2String(nextDate,format);
//StringendDateStr=DateUtil.date2String(endDate,format);
list.add(startDate);
list.add(nextDate);
while(!nextDateStr.equals(endDateStr)){
StringnextnextDate=DateUtil.getSpecifiedDayAfter(nextDateStr,format);
list.add(DateUtil.string2Date(nextnextDate,format));
nextDateStr=nextnextDate;
}
returnlist;
}
publicstaticvoidmain(String[]args)throwsException{
/**/StringpreDate=getSpecifiedDayBefore("2016-05-01","yyyy-MM-dd");
StringnextDate=getSpecifiedDayAfter("2016-05-03","yyyy-MM-dd");
DatebefroDay=getDayBefore(newDate(),"yyyy-MM-dd");
DatedateAfter=getDayAfter(newDate(),"yyyy-MM-dd");
//System.out.println("前一天:"+preDate+"后一天:"+nextDate);
//System.err.println("前一天:"+date2String(befroDay,"yyyy-MM-dd")+"
//后一天:"+dateAfter);
Stringmat="yyyy-MM-dd";//这里最好从数据库中读取
SimpleDateFormatdateTimeFormat=newSimpleDateFormat(mat);
Datedd=DateUtil.getDayBefore(newDate(),mat);
//DatebefroDay=getDayBefore(newDate(),"yyyy-MM-dd");
Stringsd=date2String(befroDay,"yyyy-MM-dd");
StringdateStr=dateTimeFormat.format(befroDay);
//System.out.println("dateStr="+dateStr+"sd"+sd);
//List<Date>listDate=get2DateListDate("2016-05-01","2016-05-03","yyyy-MM-dd");
//List<String>listDateStr=get2DateListDateStr("2016-05-01","2016-05-03","yyyy-MM-dd");
DatestartDate=newDate();
DateendDate=dateTimeFormat.parse("2016-05-31");
List<Date>listDate=get2DateListWithDate(startDate,endDate,"yyyy-MM-dd");
for(inti=0;i<listDate.size();i++){
System.err.println(listDate.get(i));
}
/*for(inti=0;i<listDateStr.size();i++){
//System.out.println(listDateStr.get(i));
}*/
}
以上就是本文的全部内容,希望对大家的学习java程序设计有所帮助。