Java程式計算兩個時間段之間的差值
給定兩個時間段,我們的任務是編寫一個Java程式來計算它們之間的差值。對於這個問題,我們可以使用java.time、java.util和java.text包的類和方法。
- SimpleDateFormat 類
- Date 類
- LocalDate 類
- Period 類
- parse() 方法
- between() 方法
隨著我們進一步閱讀本文,我們將瞭解這些類和方法在計算兩個時間段之間差值中的用途。
使用 SimpleDateFormat 和 Date 類
SimpleDateFormat是Java中的一個類,它允許我們以本地格式將日期轉換為字串(格式化)並將字串轉換為日期(解析)。Date是一個Java類,表示某個時間段(以毫秒為單位)。
示例 1
在下面的程式碼中,我們使用了HH:mm:ss格式的兩個時間段。為了根據給定的格式將字串中的文字轉換為日期,我們使用了parse()方法。
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("Difference between these two time periods is: " + diffInHr +" hours " + diffInMin +" minutes " + diffInSec + " seconds");
}
}
執行此程式碼將產生以下結果:
Difference between these two time periods is: 1 hours 20 minutes 0 seconds
示例 2
在同一個程式中,我們計算了包括年份和日期在內的兩個時間段之間的差值。
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("Difference between these two time periods is: " + diffInYears + " Years " + diffInDays + " Days " + diffInHr + " hours " + diffInMin + " minutes " + diffInSec + " seconds");
}
}
上述程式碼的輸出如下:
Difference between these two time periods is: 1 Years 28 Days 23 hours 35 minutes 0 seconds
使用 LocalDate 和 Period 類
LocalDate是用於表示日期的不可變日期時間物件。其預設格式為yyyy-MM-dd。它不能用於儲存基於時間的值,它只描述日期。
Period類位於java.time 包中。它僅使用基於日期的值。
示例
在這個Java程式中,我們使用yyyy-MM-dd格式計算了兩個時間段之間的差值。為此,我們使用了Period 類的內建方法between()。
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("Difference between these two time periods is: " + diff.getYears() +" years " + diff.getMonths() + " months " + diff.getDays() + " days");
}
}
獲得的輸出為:
Difference between these two time periods is: 1 years 9 months 19 days
結論
我們已經瞭解了Java中SimpleDateFormat、Date、LocalDate和Period類的用途,並且還了解了如何使用parse()和between()方法,這些方法在使用Java程式語言處理日期和時間時非常重要且有用。
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP