java如何获取两个日期的时间差
本文实例为大家分享了java如何获取两个日期的时间差,供大家参考,具体内容如下
rainBeginTime是从本地数据库获取的时间,格式为”yyyy-MM-ddTHH:mm:ss“。
主要逻辑:
@SuppressLint("SimpleDateFormat")
SimpleDateFormatdf=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");
df.setTimeZone(TimeZone.getTimeZone("GMT+08"));//这里一定要设置GMT时区
StringcurrentTime=df.format(newDate());
Datedate1=MyDateUtil.parseDate(trainBeginTime.replace("T",""),"yyyy-MM-ddHH:mm:ss");
Datedate2=MyDateUtil.parseDate(currentTime,"yyyy-MM-ddHH:mm:ss");
//获取相差的天数
Calendarcalendar=Calendar.getInstance();
calendar.setTime(date1);
longtimeInMillis1=calendar.getTimeInMillis();
calendar.setTime(date2);
longtimeInMillis2=calendar.getTimeInMillis();
longbetweenDays=((timeInMillis2-timeInMillis1)/(1000L*3600L*24L))+2;
textView.setText("时间相差"+betweenDays+"天");
其中MyDateUtil.java:
importandroid.os.Build;
importandroidx.annotation.RequiresApi;
importjava.text.ParseException;
importjava.text.SimpleDateFormat;
importjava.time.Instant;
importjava.time.LocalDate;
importjava.time.ZoneId;
importjava.time.ZonedDateTime;
importjava.util.Calendar;
importjava.util.Date;
/**
*Description:日期工具类
*/
publicclassMyDateUtil{
/**
*将指定的日期字符串转换成日期
*@paramdateStr日期字符串
*@parampattern格式
*@return日期对象
*/
publicstaticDateparseDate(StringdateStr,Stringpattern)
{
SimpleDateFormatsdf=newSimpleDateFormat(pattern);
Datedate;
try{
date=sdf.parse(dateStr);
}catch(ParseExceptione){
thrownewRuntimeException("日期转化错误");
}
returndate;
}
/**
*将指定的日期格式化成指定的日期字符串
*@paramdate日期对象
*@parampattern格式
*@return格式化后的日期字符串
*/
publicstaticStringdateFormate(Datedate,Stringpattern)
{
SimpleDateFormatsdf=newSimpleDateFormat(pattern);
StringdateStr;
if(date==null)
{
return"";
}
dateStr=sdf.format(date);
returndateStr;
}
/**
*查询指定日期前后指定的天数
*@paramdate日期对象
*@paramdays天数
*@return日期对象
*/
publicstaticDateincr(Datedate,intdays)
{
if(date==null){
returnnull;
}
Calendarcalendar=Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.DAY_OF_MONTH,days);
returncalendar.getTime();
}
/**
*将LocalDate日期转化成Date
*@paramlocalDateLocalDate对象
*@returnDate对象
*/
@RequiresApi(api=Build.VERSION_CODES.O)
publicstaticDatelocalDateToDate(LocalDatelocalDate)
{
if(localDate==null)
{
returnnull;
}
ZoneIdzoneId=ZoneId.systemDefault();
ZonedDateTimezonedDateTime=localDate.atStartOfDay(zoneId);
Datedate=Date.from(zonedDateTime.toInstant());
returndate;
}
/**
*将Date转成LocalDate对象
*@paramdateDate对象
*@returnLocalDate对象
*/
@RequiresApi(api=Build.VERSION_CODES.O)
publicstaticLocalDatedateToLocalDate(Datedate)
{
if(date==null)
{
returnnull;
}
ZoneIdzoneId=ZoneId.systemDefault();
Instantinstant=date.toInstant();
LocalDatelocalDate=instant.atZone(zoneId).toLocalDate();
returnlocalDate;
}
}
更多关于java时间操作的文章,请点击专题:《java时间操作》
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。