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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Java中计算时间差的方法

    本文实例讲述了Java中计算时间差的方法.分享给大家供大家参考.具体如下: 假设现在是2004-03-26 13:31:40 过去是:2004-01-02 11:30:24 要获得两个日期差,差的形式为:XX天XX小时XX分XX秒 方法一: DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); try { Date d1 = df.parse("2004-03-26 13:31:40"); Date

  • Java获取时间差(天数差,小时差,分钟差)代码示例

    网上有很多博文是讲如何获取时间差的,我看了一下,多数是使用Calendar类来实现,但是都讲得比较乱,在这里我用SimpleDateFormat来实现,比较简单,我认为比较适合拿来用. SimpleDateFormat 是一个以国别敏感的方式格式化和分析数据的具体类. 它允许格式化 (date -> text).语法分析 (text -> date)和标准化. SimpleDateFormat 允许以为日期-时间格式化选择任何用户指定的方式启动. 但是,希望用 DateFormat 中的 ge

  • Java对日期Date类进行加减运算、年份加减月份加减、时间差等等

    实现代码一: import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class DateTestUtil { public static void main(String[] args) throws Exception { SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd"); String str=&

  • java8 计算时间差的方法示例

    一.简述 在Java8中,我们可以使用以下类来计算日期时间差异: 1.Period 2.Duration 3.ChronoUnit 二.Period类 主要是Period类方法getYears(),getMonths()和getDays()来计算. 示例: package insping; import java.time.LocalDate; import java.time.Month; import java.time.Period; public class Test { public

  • java计算时间差的方法

    本文实例讲述了java计算时间差的方法.分享给大家供大家参考.具体如下: /** * 计算时间差 * @param begin * @param end * @return 返回格式,"hh:mm:ss" */ public String getTimeDifference(Date begin,Date end) { long between=(end.getTime()-begin.getTime())/1000; //除以1000是为了转换成秒 long hour=between

  • java如何获取两个日期的时间差

    本文实例为大家分享了java如何获取两个日期的时间差,供大家参考,具体内容如下 rainBeginTime是从本地数据库获取的时间,格式为"yyyy-MM-ddTHH:mm:ss". 主要逻辑: @SuppressLint("SimpleDateFormat") SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); df.setTimeZone(TimeZone.ge

  • Java简单计算两个日期月数差的方法

    本文实例讲述了Java简单计算两个日期月数差的方法.分享给大家供大家参考,具体如下: /** * 获取两个日期相差的月数 * @param d1 较大的日期 * @param d2 较小的日期 * @return 如果d1>d2返回 月数差 否则返回0 */ public static int getMonthDiff(Date d1, Date d2) { Calendar c1 = Calendar.getInstance(); Calendar c2 = Calendar.getInsta

  • js实现获取两个日期之间所有日期的方法

    本文实例讲述了js实现获取两个日期之间所有日期的方法.分享给大家供大家参考,具体如下: <script> function getDate(datestr){ var temp = datestr.split("-"); var date = new Date(temp[0],temp[1],temp[2]); return date; } var start = "2012-3-25"; var end = "2012-4-3";

  • C#获取两个时间的时间差并去除周末(取工作日)的方法

    本文实例讲述了C#获取两个时间的时间差并去除周末的方法.分享给大家供大家参考.具体分析如下: 一般来说取时间差的代码很多,但是能够只取工作日的时间差的代码很少,这段代码就来实现这一功能. protected void Page_Load(object sender, EventArgs e) { DateTime start = Convert.ToDateTime("2012-12-10"); DateTime end= Convert.ToDateTime("2012-1

  • python3获取两个日期之间所有日期,以及比较大小的实例

    如下所示: import datetime #获取两个日期间的所有日期 def getEveryDay(begin_date,end_date): date_list = [] begin_date = datetime.datetime.strptime(begin_date, "%Y-%m-%d") end_date = datetime.datetime.strptime(end_date,"%Y-%m-%d") while begin_date <=

  • java 正则表达式获取两个字符中间的字符串方法

    搞社区APP的时候,需要实现这个功能: String filetext = "//@张小名: 25分//@李小花: 43分//@王力: 100分"; Pattern p = Pattern.compile("\\@(.*?)\\:");//正则表达式,取=和|之间的字符串,不包括=和| Matcher m = p.matcher(filetext); while(m.find()) { System.out.println(m.group(0));//m.group

  • MySQL DATEDIFF函数获取两个日期的时间间隔的方法

    描述 返回两个日期之间的时间间隔. 语法 DateDiff(interval, date1, date2 [ ,firstdayofweek[ , firstweekofyear]] ) DateDiff 函数的语法有以下参数: 参数 描述 interval 必选.字符串表达式,表示用于计算 date1 和 date2 之间的时间间隔.有关数值,请参阅"设置"部分. date1, date2 必选.日期表达式.用于计算的两个日期. firstdayofweek 可选.指定星期中第一天的

  • Go获取两个时间点时间差的具体实现

    目录 获取当前时间及其秒.毫秒.纳秒数 获取两个时间点时间差代码 获取指定时间前的时间 获取指定时间后的时间 获取当前时间及其秒.毫秒.纳秒数 now := time.Now() //获取当前时间 ==>2019-08-21 11:30:51.2470317 +0800 CST m=+0.004501101 fmt.Printf("时间戳(秒):%v;\n", time.Now().Unix()) //10位 fmt.Printf("时间戳(纳秒):%v;\n"

  • ASP.NET如何获取两个日期之间的天数

    复制代码 代码如下: DateTime startdate=DateTime.Parse("2013-11-01"); DateTime enddate = DateTime.Parse("2013-11-11"); int d = enddate.Subtract(startdate).Days; 定义开始时间startdate 结束时间enddate 使用方法Subtract得到两个时间差

  • ASP.NET使用Subtract方法获取两个日期之间的天数

    DateTime startdate=DateTime.Parse("2013-11-01"); DateTime enddate = DateTime.Parse("2013-11-11"); int d = enddate.Subtract(startdate).Days; 定义开始时间startdate 结束时间enddate 使用方法Subtract得到两个时间差

随机推荐