java如何获取两个日期的时间差
"Java获取两个日期的时间差" Java获取两个日期的时间差是Java开发中常见的需求,以下是对该问题的详细解释和解决方案。 获取两个日期的时间差 要获取两个日期的时间差,我们需要使用Java中的日期和时间相关类,包括`Date`、`Calendar`、`SimpleDateFormat`等。 我们需要获取两个日期对象,使用`SimpleDateFormat`将字符串格式的日期转换为`Date`对象。然后,我们可以使用`Calendar`对象来获取两个日期的毫秒数,最后将毫秒数转换为天数。 在下面的示例代码中,我们使用了`MyDateUtil`工具类来将字符串格式的日期转换为`Date`对象,并使用`Calendar`对象来获取两个日期的毫秒数。 ```java @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工具类 在上面的示例代码中,我们使用了`MyDateUtil`工具类来将字符串格式的日期转换为`Date`对象。下面是`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 addDays(Date date, int days) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.DAY_OF_YEAR, days); return calendar.getTime(); } } ``` 总结 在上面的示例代码中,我们使用了`SimpleDateFormat`和`Calendar`对象来获取两个日期的时间差。同时,我们还提供了一个`MyDateUtil`工具类来将字符串格式的日期转换为`Date`对象。这个工具类可以帮助我们更方便地处理日期相关的操作。