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时间操作》
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。