1. 程式人生 > 程式設計 >java如何獲取兩個日期的時間差

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;
  }
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。