java如何获取两个日期的时间差
本文实例为大家分享了java如何获取两个日期的时间差,供大家参考,具体内容如下
rainBeginTime是从本地数据库获取的时间,格式为”yyyy-MM-ddTHH:mm:ss“。
主要逻辑:
@SuppressLint("SimpleDateFormat") SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); df.setTimeZone(TimeZone.getTimeZone("GMT+08"));// 这里一定要设置GMT时区 String currentTime = df.format(new Date()); Date date1 = MyDateUtil.parseDate(trainBeginTime.replace("T"," "), "yyyy-MM-dd HH:mm:ss"); Date date2 = MyDateUtil.parseDate(currentTime, "yyyy-MM-dd HH:mm:ss"); // 获取相差的天数 Calendar calendar = Calendar.getInstance(); calendar.setTime(date1); long timeInMillis1 = calendar.getTimeInMillis(); calendar.setTime(date2); long timeInMillis2 = calendar.getTimeInMillis(); long betweenDays = ((timeInMillis2 - timeInMillis1) / (1000L*3600L*24L))+2; textView.setText("时间相差"+betweenDays+"天");
其中MyDateUtil.java:
import android.os.Build; import androidx.annotation.RequiresApi; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.Instant; import java.time.LocalDate; import java.time.ZoneId; import java.time.ZonedDateTime; import java.util.Calendar; import java.util.Date; /** * Description: 日期工具类 */ public class MyDateUtil { /** * 将指定的日期字符串转换成日期 * @param dateStr 日期字符串 * @param pattern 格式 * @return 日期对象 */ public static Date parseDate(String dateStr, String pattern) { SimpleDateFormat sdf = new SimpleDateFormat(pattern); Date date; try { date = sdf.parse(dateStr); } catch (ParseException e) { throw new RuntimeException("日期转化错误"); } return date; } /** * 将指定的日期格式化成指定的日期字符串 * @param date 日期对象 * @param pattern 格式 * @return 格式化后的日期字符串 */ public static String dateFormate(Date date, String pattern) { SimpleDateFormat sdf = new SimpleDateFormat(pattern); String dateStr; if(date == null) { return ""; } dateStr = sdf.format(date); return dateStr; } /** * 查询指定日期前后指定的天数 * @param date 日期对象 * @param days 天数 * @return 日期对象 */ public static Date incr(Date date, int days) { if (date == null){ return null; } Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.DAY_OF_MONTH, days); return calendar.getTime(); } /** * 将LocalDate日期转化成Date * @param localDate LocalDate对象 * @return Date对象 */ @RequiresApi(api = Build.VERSION_CODES.O) public static Date localDateToDate(LocalDate localDate) { if (localDate == null) { return null; } ZoneId zoneId = ZoneId.systemDefault(); ZonedDateTime zonedDateTime = localDate.atStartOfDay(zoneId); Date date = Date.from(zonedDateTime.toInstant()); return date; } /** * 将Date转成LocalDate对象 * @param date Date对象 * @return LocalDate对象 */ @RequiresApi(api = Build.VERSION_CODES.O) public static LocalDate dateToLocalDate(Date date) { if (date == null) { return null; } ZoneId zoneId = ZoneId.systemDefault(); Instant instant = date.toInstant(); LocalDate localDate = instant.atZone(zoneId).toLocalDate(); return localDate; } }
更多关于java时间操作的文章,请点击专题:《java时间操作》
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
相关文章
java集合Collection实现类解析ArrayList LinkedList及Vector
这篇文章主要为大家介绍了java集合Collection实现类解析ArrayList LinkedList及Vector,有需要的朋友可以借鉴参考下,希望能够有所帮助2022-03-03在Spring-Boot中如何使用@Value注解注入集合类
这篇文章主要介绍了在Spring-Boot中如何使用@Value注解注入集合类的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-08-08解决springboot中自定义JavaBean返回的json对象属性名称大写变小写问题
开发过程中发现查询返回的数据出现自定义的JavaBean的属性值大小写格式出现问题,导致前端无法接受到数据,目前有四种解决方法,根据大佬的经验之谈,前两种是最简单便捷的,后两种是比较通用的方法,需要的朋友可以参考下2023-10-10Java concurrency之AtomicReference原子类_动力节点Java学院整理
AtomicReference是作用是对"对象"进行原子操作。这篇文章主要介绍了Java concurrency之AtomicReference原子类,需要的朋友可以参考下2017-06-06基于指针pointers和引用references的区别分析
本篇文章介绍了,基于指针pointers和引用references的区别分析。需要的朋友参考下2013-05-05
最新评论