最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java第三方庫JodaTime的具體使用

 更新時(shí)間:2021年09月18日 10:29:45   作者:shouheng  
本文主要介紹了Java第三方庫JodaTime的具體使用,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

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

1、使用JodaTime

JodaTime在Github上面的主頁:JodaTime
使用JodaTime的時(shí)候的兩種配置方式:
在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'

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

2、獲取DateTime實(shí)例

當(dāng)使用JodaTime的時(shí)候,首先你要獲取一個(gè)DateTime實(shí)例,然后用它的其他方法串聯(lián)起來實(shí)現(xiàn)強(qiáng)大的功能。想要獲取一個(gè)DateTime實(shí)例,你有很多種方式。下面列出常見的幾種方式:

方式1:使用系統(tǒng)時(shí)間構(gòu)造DateTime實(shí)例

DateTime dateTime = new DateTime();

方式2:使用具體的時(shí)間構(gòu)造DateTime實(shí)例,該方法有許多重載版本

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

方式3:使用Calendar構(gòu)造DateTime實(shí)例

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

方式4:使用其他DateTime實(shí)例構(gòu)造DateTime實(shí)例

DateTime dateTime3 = new DateTime(dateTime);

方式5:使用字符串構(gòu)造DateTime實(shí)例

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

3、使用DateTime的方法

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

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

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

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

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

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

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

4、使用Property的

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

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

下面是它的一些示例:

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

5、其他的靜態(tài)方法

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

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

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

結(jié)語

這里只是通過JodaTime的一些常用的方法的實(shí)例來說明其設(shè)計(jì)的基本原理,重點(diǎn)在于理清其中的邏輯,明白每個(gè)被串聯(lián)的操作究竟做了什么。

相關(guān)代碼:Java-advanced

到此這篇關(guān)于Java第三方庫JodaTime的具體使用的文章就介紹到這了,更多相關(guān)Java JodaTime 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(60)

    Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(60)

    下面小編就為大家?guī)硪黄狫ava基礎(chǔ)的幾道練習(xí)題(分享)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧,希望可以幫到你
    2021-08-08
  • Java設(shè)置httponly?cookie的實(shí)現(xiàn)示例

    Java設(shè)置httponly?cookie的實(shí)現(xiàn)示例

    本文主要介紹了Java設(shè)置httponly?cookie的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • JavaMail實(shí)現(xiàn)發(fā)送郵件(QQ郵箱)

    JavaMail實(shí)現(xiàn)發(fā)送郵件(QQ郵箱)

    這篇文章主要為大家詳細(xì)介紹了JavaMail實(shí)現(xiàn)發(fā)送郵件(QQ郵箱),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • 詳解Java數(shù)組的排序算法與二分查找法

    詳解Java數(shù)組的排序算法與二分查找法

    這篇文章詳細(xì)給大家介紹了Java數(shù)組的排序算法與二分查找法,文中有詳細(xì)的代碼示例,對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2023-05-05
  • Java中常用的設(shè)計(jì)模式之工廠模式詳解

    Java中常用的設(shè)計(jì)模式之工廠模式詳解

    這篇文章主要為大家詳細(xì)介紹了Java中常用的設(shè)計(jì)模式之工廠模式,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • springboot controller 增加指定前綴的兩種實(shí)現(xiàn)方法

    springboot controller 增加指定前綴的兩種實(shí)現(xiàn)方法

    這篇文章主要介紹了springboot controller 增加指定前綴的兩種實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • JavaFX實(shí)現(xiàn)簡易時(shí)鐘效果(一)

    JavaFX實(shí)現(xiàn)簡易時(shí)鐘效果(一)

    這篇文章主要為大家詳細(xì)介紹了JavaFX實(shí)現(xiàn)簡易時(shí)鐘效果的第一篇,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • Java用GDAL讀寫shapefile的方法示例

    Java用GDAL讀寫shapefile的方法示例

    Shapefile文件是描述空間數(shù)據(jù)的幾何和屬性特征的非拓?fù)鋵?shí)體矢量數(shù)據(jù)結(jié)構(gòu)的一種格式,由ESRI公司開發(fā)。這篇文章給大家介紹了Java如何用GDAL讀寫shapefile的方法示例,有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-12-12
  • Java動態(tài)規(guī)劃篇之線性DP的示例詳解

    Java動態(tài)規(guī)劃篇之線性DP的示例詳解

    這篇文章主要通過幾個(gè)例題為大家詳細(xì)介紹一些Java動態(tài)規(guī)劃中的線性DP,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)Java有一定的幫助,需要的可以參考一下
    2022-11-11
  • RocketMQ消息中間件超詳細(xì)解讀

    RocketMQ消息中間件超詳細(xì)解讀

    這篇文章主要介紹了RocketMQ消息中間件超詳細(xì)解讀,RocketMQ作為一款純java、分布式、隊(duì)列模型的開源消息中間件,支持事務(wù)消息、順序消息、批量消息、定時(shí)消息、消息回溯等,本文就來詳細(xì)解讀一下,需要的朋友可以參考下
    2023-05-05

最新評論

临沧市| 湖北省| 浦城县| 改则县| 大埔区| 博兴县| 行唐县| 鹤山市| 泰和县| 奇台县| 桐庐县| 永昌县| 铁岭县| 商河县| 米林县| 称多县| 龙口市| 布尔津县| 晋中市| 会泽县| 宁蒗| 龙江县| 明星| 广平县| 盖州市| 乌拉特中旗| 弋阳县| 黎川县| 且末县| 上思县| 扶沟县| 容城县| 屯昌县| 金湖县| 循化| 石渠县| 池州市| 西乌珠穆沁旗| 攀枝花市| 余江县| 临桂县|