国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Java計算時間差、日期差

這篇具有很好參考價值的文章主要介紹了Java計算時間差、日期差。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

在java中,計算時間差或日期差有多種方法,以下提供五種示例:


目錄

一、使用?Instant?和?Duration?類計算時間差

二、使用?LocalDate?和?ChronoUnit?類計算日期差

三、使用 Joda-Time 庫計算時間差和日期差

四、使用?Instant?和?Period?類計算日期差

五、使用 Java 8 的?java.time.temporal.ChronoUnit?類計算時間或日期差

Joda-Time


一、使用?Instant?和?Duration?類計算時間差

Instant start = Instant.now();
Thread.sleep(1000);   // 讓程序睡眠 1 秒鐘,模擬耗時操作
Instant end = Instant.now();

Duration duration = Duration.between(start, end);
System.out.println("Time elapsed: " + duration.toMillis() + " milliseconds");

這個示例使用?Instant?類獲取開始時間和結(jié)束時間,然后使用?Duration?類計算時間差。Duration?類提供了一些方便的方法,如?toMillis()?和?toSeconds()?方法,可以將時間差轉(zhuǎn)換為毫秒或秒數(shù)。

二、使用?LocalDate?和?ChronoUnit?類計算日期差

LocalDate start = LocalDate.of(2021, Month.JANUARY, 1);
LocalDate end = LocalDate.of(2021, Month.DECEMBER, 31);

long days = ChronoUnit.DAYS.between(start, end);
System.out.println("Days elapsed: " + days);

這個示例使用?LocalDate?類獲取開始日期和結(jié)束日期,在使用?ChronoUnit?類計算日期差時,使用?DAYS?枚舉表示計算出的日期差的時間單位為天數(shù)。需要注意的是,ChronoUnit?類提供了多個時間單位,可以根據(jù)具體需求選擇適當?shù)臅r間單位。

三、使用 Joda-Time 庫計算時間差和日期差

DateTime start = new DateTime(2022, 1, 1, 0, 0, 0, 0);
DateTime end = new DateTime(2022, 12, 31, 23, 59, 59, 999);

Duration duration = new Duration(start, end);
System.out.println("Time elapsed: " + duration.getMillis() + " milliseconds");

Days days = Days.daysBetween(start.toLocalDate(), end.toLocalDate());
System.out.println("Days elapsed: " + days.getDays());

這個示例使用 Joda-Time 庫獲取開始時間和結(jié)束時間。在計算時間差時,使用?Duration?類計算時間差,并使用?getMillis()?方法獲取時間差的毫秒數(shù);在計算日期差時,使用?Days?類計算日期差,并使用?getDays()?方法獲取天數(shù)。需要注意的是,該庫已在 Java 8 中得到了標準化,因此,現(xiàn)在的 Java 版本已經(jīng)可以通過使用?java.time?包來代替 Joda-Time 庫。Joda-Time庫的使用在文章末尾!

四、使用?Instant?和?Period?類計算日期差

Instant start = Instant.now();
Thread.sleep(1000);   // 讓程序睡眠 1 秒鐘,模擬耗時操作
Instant end = Instant.now();

Period period = Period.between(start.atZone(ZoneId.systemDefault()).toLocalDate(),
                               end.atZone(ZoneId.systemDefault()).toLocalDate());
System.out.println("Days elapsed: " + period.getDays());

這個示例使用?Instant?類獲取開始時間和結(jié)束時間,并使用?Period?類計算日期差。Period?類用于以年、月和日為單位表示時間段。需要注意的是,由于?Instant?類表示一個瞬間,不包含時區(qū)和日期信息,因此,需要使用?atZone()?方法將其轉(zhuǎn)換為帶時區(qū)的?ZonedDateTime?類。如果程序運行在不同的時區(qū)中,需注意時區(qū)的差異對最終計算結(jié)果的影響。

五、使用 Java 8 的?java.time.temporal.ChronoUnit?類計算時間或日期差

LocalDateTime start = LocalDateTime.of(2021, Month.JANUARY, 1, 0, 0, 0);
LocalDateTime end = LocalDateTime.of(2021, Month.DECEMBER, 31, 23, 59, 59);

long days = ChronoUnit.DAYS.between(start, end);
long hours = ChronoUnit.HOURS.between(start, end);
long minutes = ChronoUnit.MINUTES.between(start, end);
long seconds = ChronoUnit.SECONDS.between(start, end);

System.out.println("Days elapsed: " + days);
System.out.println("Hours elapsed: " + hours);
System.out.println("Minutes elapsed: " + minutes);
System.out.println("Seconds elapsed: " + seconds);

這個示例使用 Java 8 的?java.time.temporal.ChronoUnit?類獲取開始時間和結(jié)束時間,然后計算時間或日期差。ChronoUnit?類提供了多個方法,可用于計算不同時間段的差。在使用此方法時,需要注意開始時間和結(jié)束時間必須是同一時間段的。

Joda-Time

maven

<dependency>
    <groupId>joda-time</groupId>
    <artifactId>joda-time</artifactId>
    <version>2.10.10</version>
</dependency>

?Joda-Time 庫的通用工具類,主要包括日期、時間、時間間隔等功能

import org.joda.time.*;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;

public class JodaTimeUtils {

    // 獲取當前日期
    public static LocalDate getCurrentDate() {
        return new LocalDate();
    }

    // 獲取當前時間
    public static LocalTime getCurrentTime() {
        return new LocalTime();
    }

    // 獲取當前日期和時間
    public static LocalDateTime getCurrentDateTime() {
        return new LocalDateTime();
    }

    // 獲取指定日期的開始時間
    public static LocalDateTime getStartOfDay(LocalDate date) {
        return date.toLocalDateTime(LocalTime.MIN);
    }

    // 獲取指定日期的結(jié)束時間
    public static LocalDateTime getEndOfDay(LocalDate date) {
        return date.toLocalDateTime(LocalTime.MAX);
    }

    // 獲取指定日期時間的格式化字符串
    public static String formatDateTime(LocalDateTime dateTime, String pattern) {
        DateTimeFormatter formatter = DateTimeFormat.forPattern(pattern);
        return dateTime.toString(formatter);
    }

    // 將格式化字符串轉(zhuǎn)換成日期時間
    public static LocalDateTime parseDateTime(String dateTimeString, String pattern) {
        DateTimeFormatter formatter = DateTimeFormat.forPattern(pattern);
        return formatter.parseLocalDateTime(dateTimeString);
    }

    // 計算兩個日期之間的天數(shù)
    public static int getDaysBetween(LocalDate startDate, LocalDate endDate) {
        Days days = Days.daysBetween(startDate, endDate);
        return days.getDays();
    }

    // 計算兩個日期時間之間的秒數(shù)
    public static int getSecondsBetween(LocalDateTime startDateTime, LocalDateTime endDateTime) {
        Seconds seconds = Seconds.secondsBetween(startDateTime, endDateTime);
        return seconds.getSeconds();
    }

    // 計算兩個日期時間之間的分鐘數(shù)
    public static int getMinutesBetween(LocalDateTime startDateTime, LocalDateTime endDateTime) {
        Minutes minutes = Minutes.minutesBetween(startDateTime, endDateTime);
        return minutes.getMinutes();
    }

    // 計算兩個日期時間之間的小時數(shù)
    public static int getHoursBetween(LocalDateTime startDateTime, LocalDateTime endDateTime) {
        Hours hours = Hours.hoursBetween(startDateTime, endDateTime);
        return hours.getHours();
    }

    // 計算兩個日期時間之間的毫秒數(shù)
    public static long getMillisBetween(LocalDateTime startDateTime, LocalDateTime endDateTime) {
        return new Duration(startDateTime.toDateTime(), endDateTime.toDateTime()).getMillis();
    }

    // 判斷兩個日期是否相等
    public static boolean isEqual(LocalDate date1, LocalDate date2) {
        return date1.equals(date2);
    }

    // 判斷兩個日期時間是否相等
    public static boolean isEqual(LocalDateTime dateTime1, LocalDateTime dateTime2) {
        return dateTime1.equals(dateTime2);
    }

    // 判斷一個日期是否在另一個日期之前
    public static boolean isBefore(LocalDate date1, LocalDate date2) {
        return date1.isBefore(date2);
    }

    // 判斷一個日期時間是否在另一個日期時間之前
    public static boolean isBefore(LocalDateTime dateTime1, LocalDateTime dateTime2) {
        return dateTime1.isBefore(dateTime2);
    }

    // 判斷一個日期是否在另一個日期之后
    public static boolean isAfter(LocalDate date1, LocalDate date2) {
        return date1.isAfter(date2);
    }

    // 判斷一個日期時間是否在另一個日期時間之后
    public static boolean isAfter(LocalDateTime dateTime1, LocalDateTime dateTime2) {
        return dateTime1.isAfter(dateTime2);
    }

    // 判斷一個日期是否在另一時間間隔內(nèi)
    public static boolean isInInterval(LocalDate date, Interval interval) {
        return interval.contains(date.toDateTimeAtStartOfDay());
    }

    // 判斷一個日期時間是否在另一時間間隔內(nèi)
    public static boolean isInInterval(LocalDateTime dateTime, Interval interval) {
        return interval.contains(dateTime.toDateTime());
    }
}

使用示例:文章來源地址http://www.zghlxwxcb.cn/news/detail-627579.html

LocalDate date1 = new LocalDate(2020, 1, 1);
LocalDate date2 = new LocalDate(2022, 1, 1);
System.out.println(JodaTimeUtils.getDaysBetween(date1, date2)); // 輸出 731

LocalDateTime dateTime1 = new LocalDateTime(2020, 1, 1, 12, 0, 0);
LocalDateTime dateTime2 = new LocalDateTime(2022, 1, 1, 12, 0, 0);
System.out.println(JodaTimeUtils.getHoursBetween(dateTime1, dateTime2)); // 輸出 17520

String dateTimeString = "2020-01-01 12:00:00";
LocalDateTime dateTime = JodaTimeUtils.parseDateTime(dateTimeString, "yyyy-MM-dd HH:mm:ss");
System.out.println(JodaTimeUtils.formatDateTime(dateTime, "yyyy年MM月dd日 HH:mm:ss")); // 輸出 2020年01月01日 12:00:00

LocalDateTime startDateTime = new LocalDateTime(2020, 1, 1, 12, 0, 0);
LocalDateTime endDateTime = new LocalDateTime(2022, 1, 1, 12, 0, 0);
Interval interval = new Interval(startDateTime.toDateTime(), endDateTime.toDateTime());

LocalDateTime dateTimeBefore = new LocalDateTime(2019, 1, 1, 12, 0, 0);
System.out.println(JodaTimeUtils.isInInterval(dateTimeBefore, interval)); // 輸出 false

LocalDateTime dateTimeAfter = new LocalDateTime(2023, 1, 1, 12, 0, 0);
System.out.println(JodaTimeUtils.isInInterval(dateTimeAfter, interval)); // 輸出 false

LocalDateTime dateTimeWithin = new LocalDateTime(2021, 1, 1, 12, 0, 0);
System.out.println(JodaTimeUtils.isInInterval(dateTimeWithin, interval)); // 輸出 true

到了這里,關(guān)于Java計算時間差、日期差的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • element-ui日期選擇器時間差

    element-ui日期選擇器時間差

    #主要記錄三個問題 日期選擇器選擇時獲取到的格式相差八小時 當日期格式為–拼接時,轉(zhuǎn)成時間戳?xí)嗖畎诵r(2023-03-09) DatePicker設(shè)置區(qū)域范圍和校驗(暫無,明天加上) 由于element-ui日期選擇器用的時間為世界標準時間,我們國家的標準時間為東八區(qū),所以會有8小時時間

    2024年02月08日
    瀏覽(24)
  • Baumer工業(yè)相機堡盟工業(yè)相機如何使用BGAPISDK的相機圖像時間戳計算運行時間以及時間差(C#)

    Baumer工業(yè)相機堡盟工業(yè)相機如何使用BGAPISDK的相機圖像時間戳計算運行時間以及時間差(C#)

    Baumer工業(yè)相機堡盟相機是一種高性能、高質(zhì)量的工業(yè)相機,可用于各種應(yīng)用場景,如物體檢測、計數(shù)和識別、運動分析和圖像處理。 Baumer的萬兆網(wǎng)相機擁有出色的圖像處理性能,可以實時傳輸高分辨率圖像。此外,該相機還具有快速數(shù)據(jù)傳輸、低功耗、易于集成以及高度可擴

    2024年02月09日
    瀏覽(29)
  • Baumer工業(yè)相機堡盟工業(yè)相機如何使用BGAPISDK的相機圖像時間戳計算運行時間以及時間差(C++)

    Baumer工業(yè)相機堡盟工業(yè)相機如何使用BGAPISDK的相機圖像時間戳計算運行時間以及時間差(C++)

    Baumer工業(yè)相機堡盟相機是一種高性能、高質(zhì)量的工業(yè)相機,可用于各種應(yīng)用場景,如物體檢測、計數(shù)和識別、運動分析和圖像處理。 Baumer的萬兆網(wǎng)相機擁有出色的圖像處理性能,可以實時傳輸高分辨率圖像。此外,該相機還具有快速數(shù)據(jù)傳輸、低功耗、易于集成以及高度可擴

    2024年02月08日
    瀏覽(35)
  • 飛書-多維文檔-計算時間差

    飛書-多維文檔-計算時間差

    如圖所示,字段類型選擇 公式 單擊 公式編輯器 在彈出的公式編輯框中輸入公式 TEXT([終結(jié)時間]-[開始時間],\\\"HH:MM\\\") [終結(jié)時間] 和 [開始時間] 請?zhí)鎿Q成你的表格中對應(yīng)的字段名稱 HH:MM 表示輸出的時間格式為 時:分 其中 “YYY/MM/DD HH:MM” 表示 年月日時分,可以自行選取合適的值

    2024年02月07日
    瀏覽(72)
  • shell腳本計算時間差

    https://www.cnblogs.com/abclife/p/15828229.html

    2024年02月11日
    瀏覽(32)
  • LocalDate、LocalDateTime計算時間差

    LocalDate、LocalDateTime計算時間差

    LocalDateTime計算天數(shù)和時間差 以下是Jdk1.7存在的問題以及Jdk1.8新特性 Jdk1.7的問題 ??在Jdk1.8版本發(fā)布了新的Date-Time API來加強對時間、日期的處理。這是因為在Jdk1.7中時間、日期的處理上存在如下的一些問題。 非線程安全。Date類是非線程安全的,這是Java時間日期類中最大的

    2023年04月15日
    瀏覽(29)
  • python獲取當前時間(年-月-日 時:分:秒:毫秒),提取當前日期/時間數(shù)字,獲取程序運行的時間差(時:分:秒),讓程序停止xx秒【兩種方法,第二種方法精度較高】

    python獲取當前時間(年-月-日 時:分:秒:毫秒),提取當前日期/時間數(shù)字,獲取程序運行的時間差(時:分:秒),讓程序停止xx秒【兩種方法,第二種方法精度較高】

    目錄 》》》第一種方法,代碼如下:(獲取當前時間,提取當前日期/時間數(shù)字) 》》》第二種方法,代碼如下:(獲取當前時間,提取日期/時間數(shù)字,獲取時間差【時:分:秒】) 》》》第一種方法,代碼如下:(獲取當前時間,提取當前日期/時間數(shù)字) 第一種方法的運行

    2024年02月16日
    瀏覽(27)
  • C語言: 兩段時間求出時間差

    C語言: 兩段時間求出時間差

    ? 運行結(jié)果:

    2024年02月06日
    瀏覽(20)
  • php怎么實現(xiàn)時間差

    php實現(xiàn)時間差的方法:1、通過strtotime函數(shù)將兩個日期轉(zhuǎn)換為時間戳;2、通過“$enddate-$startdate”公式將兩個時間戳相減;3、將時間差“$diff_seconds”除以86400,并使用“floor()”函數(shù)向下舍入為最接近的整數(shù)即可獲得相差天數(shù)。 php怎么實現(xiàn)時間差? php求兩個給定日期的時間差:

    2024年02月08日
    瀏覽(26)
  • 面試算法35:最小時間差

    給定一組范圍在00:00至23:59的時間,求任意兩個時間之間的最小時間差。例如,輸入時間數(shù)組[“23:50”,“23:59”,“00:00”],\\\"23:59\\\"和\\\"00:00\\\"之間只有1分鐘的間隔,是最小的時間差。 這個題目最直觀的解法是求出任意兩個時間的間隔,然后比較得出最小的時間差。如

    2024年02月06日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包