亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java第三方庫JodaTime的具體使用是怎樣的

發布時間:2021-09-24 16:19:43 來源:億速云 閱讀:109 作者:柒染 欄目:開發技術

這篇文章給大家介紹Java第三方庫JodaTime的具體使用是怎樣的,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

Java8之前的時間庫中存在一些設計不好的地方,導致用起來非常地不方便,又容易出錯。比如,要實現在指定的日期的基礎上面增加指定的時間的操作,你需要些大量的樣板代碼;而它的月份從0開始,稍有不慎就會掉入坑中。所以,通常我們使用第三方庫Joda Time來進行時間相關的操作。

1、使用JodaTime

JodaTime在Github上面的主頁:JodaTime
使用JodaTime的時候的兩種配置方式:
在Maven中:

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

在Gradle中:

compile 'joda-time:joda-time:2.9.9'

核心類
使用最多的五個日期時間類:
- Instant - 不可變的類,用來表示時間軸上一個瞬時的點(時間戳)
- DateTime - 不可變的類,用來替換JDK的Calendar類
LocalDate - 不可變的類,表示一個本地的日期,而不包含時間部分(沒有時區信息)
- LocalTime - 不可變的類,表示一個本地的時間,而不包含日期部分(沒有時區信息)
- LocalDateTime - 不可變的類,表示一個本地的日期-時間(沒有時區信息)

2、獲取DateTime實例

當使用JodaTime的時候,首先你要獲取一個DateTime實例,然后用它的其他方法串聯起來實現強大的功能。想要獲取一個DateTime實例,你有很多種方式。下面列出常見的幾種方式:

方式1:使用系統時間構造DateTime實例

DateTime dateTime = new DateTime();

方式2:使用具體的時間構造DateTime實例,該方法有許多重載版本

DateTime dateTime1 = new DateTime(
2000, // year
1,    // month
1,    // day
0,    // hour (midnight is zero)
0,    // minute
0,    // second
0     // milliseconds
);

方式3:使用Calendar構造DateTime實例

DateTime dateTime2 = new DateTime(Calendar.getInstance());

方式4:使用其他DateTime實例構造DateTime實例

DateTime dateTime3 = new DateTime(dateTime);

方式5:使用字符串構造DateTime實例

DateTime dateTime4 = new DateTime("2006-01-26T13:30:00-06:00");
DateTime dateTime5 = new DateTime("2006-01-26");

3、使用DateTime的方法

DateTime中有許多的方法,這里我們將常用的方法分成兩類。一類是在方法中返回DateTime的那種,一類是在方法中返回Property類型的那種。顯然,后面的那種繼續串聯操作的話,就需要調用Property的實例方法了。
這里,我們先給出DateTime中的第一類方法。

// 指定的時間單位上面增加指定的值
DateTime dateTime0 = dateTime.plusDays(1);
System.out.println(dateTime0);

// 指定的時間單位上面減少指定的值
DateTime dateTime6 = dateTime.minusDays(1);
System.out.println(dateTime6);

// 除了增減日期還可以直接指定它的指定時間單位上面的值
DateTime dateTime7 = dateTime.withYear(2020);
System.out.println(dateTime7);

// 按照指定的格式輸出日期
System.out.println(dateTime.toString("E MM/dd/yyyy HH:mm:ss.SSS"));

在上面的代碼中,我們只給出了其中的一部分方法的實例。實際上,在DateTime內部有許多的方法,只是它們的原理基本類似。

上面的一些方法,如果涉及的時間發生了變化(具體是指時間對應的毫秒數發生了變化),就會調用DateTime實例的withMillis()方法。在該方法中,如果發現傳入的毫秒數與當前的毫秒數不一樣就會新建一個DateTime實例,并將其返回。所以,上面的plusDays(1)和minusDays(1)返回的DateTime實際上已經是另一個實例了。

4、使用Property的

可以通過DateTime實例的millisOfDay() dayOfYear() minuteOfDay()等一些列方法可以獲取到該DateTime的一個Property實例,然后可以通過調用Property的方法再獲取一個DateTime實例。也就是說,實際上調用DateTime的方法獲取Property實例是為了對指定的時間位置的信息進行修改。比如,對“日”進行修改,對“年”進行修改等等。修改了之后還是要獲取一個DateTime實例,然后再繼續進行后續的操作。

實際上每次調用DateTime的方法獲取Property實例的時候,都會將當前的DateTime作為參數傳入。然后當調用了指定的方法之后又會調用DateTime實例的withMillis()方法判斷時間是否發生變化,如果發生了變化就創建一個新實例并返回。

下面是它的一些示例:

// 這里先用dayOfMonth獲取一個Property實例,然后調用它的withMaximumValue方法
// 它的含義是指定日期的其他日期不變,月份變成最大的之后返回一個DateTime,即如果傳入的是2018年5月1日,將返回2018年5月31日,
// 年,月,秒等位置不變,日變成該月最大的。
DateTime dateTime0 = dateTime.dayOfMonth().withMaximumValue();
DateTime dateTime1 = dateTime.dayOfMonth().withMinimumValue();

5、其他的靜態方法

除了上面的一些類之外,JodaTime還有許多的靜態方法供我們使用。比如:

System.out.println(Days.daysBetween(dateTime1, dateTime).getDays());
System.out.println(Months.monthsBetween(dateTime1, dateTime).getMonths());
System.out.println(Years.yearsBetween(dateTime1, dateTime).getYears());

當然,這里我們只列出了對兩個DateTime實例的“日” “月”和“年”單位的操作,還有許多類似的類可以用來對“毫秒”“秒”等操作。

關于Java第三方庫JodaTime的具體使用是怎樣的就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

磴口县| 台中县| 文昌市| 陆良县| 徐闻县| 新野县| 洛浦县| 博客| 阿拉善左旗| 阿坝县| 桂林市| 三台县| 巴林右旗| 正宁县| 镇安县| 锡林郭勒盟| 盐城市| 盐源县| 江油市| 三明市| 汉川市| 沽源县| 大埔区| 塘沽区| 胶南市| 合川市| 象州县| 贵阳市| 柘城县| 保康县| 冕宁县| 资兴市| 北川| 工布江达县| 开远市| 洛宁县| 平乡县| 茂名市| 日土县| 嘉善县| 大渡口区|