Java程序 计算两个时间段的差异

Java程序 计算两个时间段的差异

在Java中处理日期和时间,我们需要导入java.time,java.util和java.text包。我们将利用这些包提供的以下类和方法来计算Java中两个时间段之间的差异:

  • SimpleDateFormat类

  • Date类

  • LocalDate类

  • Period类

  • 解析(parse)方法

  • 之间(between)方法

随着我们继续阅读本文,我们将了解这些类和方法的用途。

方法1:使用SimpleDateFormat和Date类

SimpleDateFormat – 它是Java的一个类,允许我们将日期转换为字符串(格式化),并将字符串转换为日期(解析)在本地格式下。

Date – 这是一个表示某段时间(以毫秒为单位)的类。

示例

import java.text.*;
import java.util.Date;
public class Main {
   public static void main(String[] args) throws Exception {
      String timePeriod1 = "09:00:00";
      String timePeriod2 = "10:20:00";
      SimpleDateFormat timeformat = new SimpleDateFormat("HH:mm:ss");
      Date dat1 = timeformat.parse(timePeriod1);
      Date dat2 = timeformat.parse(timePeriod2);
      long diffInMs = dat2.getTime() - dat1.getTime();
      long diffInSec = diffInMs / 1000 % 60;
      long diffInMin = diffInMs / (60 * 1000) % 60;
      long diffInHr = diffInMs / (60 * 60 * 1000) % 24;
      System.out.format("这两个时间段之间的差异是:" + diffInHr + "小时" + diffInMin + "分钟" + diffInSec + "秒");
   } 
}

输出

这两个时间段之间的差异是: 1小时20分钟0秒

在上面的代码中,我们采用了两个具有HH:mm:ss格式的时间段。我们为SimpleDateFormat类创建了一个名为timeformat的对象。为了根据给定的格式将文本从字符串转换为日期,我们使用了parse()方法。

包括年和日期的差异

示例

import java.text.SimpleDateFormat;
import java.util.Date;
public class Main{
   public static void main(String[] args) throws Exception {
      String timePeriod1 = "23/02/23 09:25:00";
      String timePeriod2 = "24/03/23 09:00:00";
      SimpleDateFormat timeformat = new SimpleDateFormat("yy/MM/dd HH:mm:ss");
      Date dat1 = timeformat.parse(timePeriod1);
      Date dat2 = timeformat.parse(timePeriod2);
      long diffInMs = dat2.getTime() - dat1.getTime();
      long diffInSec = diffInMs / 1000 % 60;
      long diffInMin = diffInMs / (60 * 1000) % 60;
      long diffInHr = diffInMs / (60 * 60 * 1000) % 24;
      long diffInDays = diffInMs / (60 * 60 * 24 * 1000) % 365;
      long diffInYears = (diffInMs / (1000l*60*60*24*365)); 
      System.out.format("这两个时间段之间的差异是:" + diffInYears + "年" + diffInDays + "天" + diffInHr + "小时" + diffInMin + "分钟" + diffInSec + "秒");
   }
} 

输出

这两个时间段之间的差异是: 1年28天23小时35分钟0秒

在同一个程序中,我们计算了包括年和日期的时间段之间的差异。

方法2:使用LocalDate和Period类

LocalDate – 它是一个不可变的日期时间对象,用于表示日期。它的默认格式是yyyy-MM-dd。它不能用于存储基于时间的值,它只描述日期。

Period – 该类存在于java.time包中。它只使用基于日期的值。

示例

import java.time.*;
import java.util.*;
public class Main {
   public static void main(String[] args){
      LocalDate d1 = LocalDate.of(2023, 11, 20);
      LocalDate d2 = LocalDate.of(2022, 02, 01);
      Period diff = Period.between(d2, d1);
      System.out.printf("这两个时间段之间的差异是:" + diff.getYears() + "年" + diff.getMonths() + "个月" + diff.getDays() + "天");
   }
}

输出

这两个时间段之间的差异是: 1年9个月19天

在这种方法中,我们使用yyyy、MM、dd格式计算了两个时间段之间的差异。我们为Period类创建了一个名为‘diff’的对象来存储差异。使用Period类的内置方法‘between()’,我们找到了两个日期之间的差异。它接受两个参数,即开始和结束日期。

当我们改变格式时

示例

import java.time.*;
import java.util.*;
public class Main {  
   public static void main(String[] args){
      LocalDate d1 = LocalDate.parse("2021-01-20");
      LocalDate d2 = LocalDate.parse("2023-04-01");
      Period diff = Period.between(d1, d2);
      System.out.printf("这两个时间段之间的差异是:" + diff);
   }
}

输出

这两个时间段之间的差异是: P2Y2M12D

在上面的程序中,我们将格式更改为yyyy-MM-dd。

结论

我们已经了解了Java的SimpleDateFormat、Date、LocalDate和Period类的用途,并且也了解了在Java编程语言中处理日期和时间时非常重要且有用的parse()和between()方法。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Java 示例