Java的DateTimeFormatter
類主要用于解析和格式化日期時間,但它本身不能直接處理時差。要處理時差,你需要使用Duration
或Period
類。
以下是一些示例,說明如何使用Duration
和Period
處理時差:
Duration
處理時差(以秒為單位):import java.time.Duration;
public class TimeDifference {
public static void main(String[] args) {
// 創建兩個LocalDateTime對象
LocalDateTime dateTime1 = LocalDateTime.of(2021, 1, 1, 12, 0);
LocalDateTime dateTime2 = LocalDateTime.of(2021, 1, 1, 15, 30);
// 計算時差
Duration duration = Duration.between(dateTime1, dateTime2);
// 輸出時差
System.out.println("Time difference: " + duration.toHoursPart() + " hours, " + duration.toMinutesPart() + " minutes");
}
}
Period
處理時差(以天為單位):import java.time.LocalDate;
import java.time.Period;
public class DateDifference {
public static void main(String[] args) {
// 創建兩個LocalDate對象
LocalDate date1 = LocalDate.of(2021, 1, 1);
LocalDate date2 = LocalDate.of(2021, 1, 10);
// 計算時差
Period period = Period.between(date1, date2);
// 輸出時差
System.out.println("Date difference: " + period.getDays() + " days");
}
}
如果你需要將時差與日期時間一起格式化,你可以先將Duration
或Period
對象轉換為字符串,然后使用DateTimeFormatter
進行格式化。例如:
import java.time.Duration;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class TimeDifferenceFormatted {
public static void main(String[] args) {
// 創建兩個LocalDateTime對象
LocalDateTime dateTime1 = LocalDateTime.of(2021, 1, 1, 12, 0);
LocalDateTime dateTime2 = LocalDateTime.of(2021, 1, 1, 15, 30);
// 計算時差
Duration duration = Duration.between(dateTime1, dateTime2);
// 將時差轉換為字符串
String durationString = String.format("%d hours, %d minutes", duration.toHoursPart(), duration.toMinutesPart());
// 使用DateTimeFormatter格式化日期時間
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
// 輸出格式化后的日期時間和時差
System.out.println("Formatted date and time: " + dateTime1.format(formatter));
System.out.println("Formatted time difference: " + durationString);
}
}