<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          今天,又被Java8的時(shí)間庫(kù)惡心到了,有同感的舉手...

          共 1478字,需瀏覽 3分鐘

           ·

          2022-06-07 23:42

          在我所在公司和項(xiàng)目中,實(shí)際上時(shí)間庫(kù)應(yīng)用不算太多,用到也是非常簡(jiǎn)單的一些應(yīng)用場(chǎng)景,一般情況下連Java8的時(shí)間庫(kù)都很少用到,今天為了寫(xiě)個(gè)時(shí)間查詢,把我折騰夠嗆,是我沒(méi)有領(lǐng)悟到Java8時(shí)間庫(kù)的精髓嗎?還是我的功力不夠?一起來(lái)看看吧

          需求:給定一個(gè)時(shí)間范圍:Date from, Date to,查詢出在這時(shí)間范圍內(nèi)的記錄并按日期(年月日)分組,每條記錄的日期是包含日期和時(shí)間的,需要進(jìn)行Truncate。如果只輸入一個(gè)日期,那么只統(tǒng)計(jì)該天的所有記錄,即0時(shí)0分0秒到23時(shí)59分59秒之間的記錄。

          問(wèn)題1:Java8中的LocalDate與Date互轉(zhuǎn)

          Date和LocalDate互轉(zhuǎn)代碼

          這個(gè)互轉(zhuǎn)的寫(xiě)法應(yīng)該是比較正統(tǒng)的吧,老鐵們應(yīng)該沒(méi)有什么異議。我就想說(shuō)都是一家的,這轉(zhuǎn)換咋就這么麻煩呢?正常不是應(yīng)該這樣嗎:

          LocalDate?ld;
          Date?date = ld.toDate();

          或者:

          Date?date;
          LocalDate?ld = LocalDate(date);
          LocalDate?ld = LocalDate.from(date);

          看看人家Joda-time:

          // from Joda to JDK
          DateTime dt =?new?DateTime();
          Date?jdkDate = dt.toDate();

          // from JDK to Joda
          dt =?new?DateTime(jdkDate);


          // from Joda to JDK
          DateTime dt =?new?DateTime();
          Calendar jdkCal = dt.toCalendar(Locale.CHINESE);
          // from JDK to Joda
          dt =?new?DateTime(jdkCal);

          Java不愧為“渣瓦”,哎,不過(guò)興許還真是咱太菜吧,沒(méi)法領(lǐng)悟Java大佬的設(shè)計(jì)精髓

          問(wèn)題2:Calendar和Java8就是完全兩張皮

          實(shí)現(xiàn)一個(gè)功能:給定一個(gè)Date,只截取年、月、日,并將其分解為兩個(gè)Date,一個(gè)是XXXX年XX月XX日 00:00:00和XXXX年XX月XX日 23:59:59

          用Calendar實(shí)現(xiàn)的代碼

          林哥直接把項(xiàng)目中的代碼片段截了個(gè)圖,各位看官是不是覺(jué)得非常累贅,可不是嘛,用Java8的時(shí)間庫(kù)也簡(jiǎn)潔不到哪里去,寫(xiě)法如下:

          Java8時(shí)間庫(kù)的寫(xiě)法

          堂堂Java8的時(shí)間庫(kù),連基本的截?。╰runcate)操作都木有,哎,說(shuō)你什么好呢,“渣瓦”!

          我們?cè)倏纯碕oda的“騷”操作:

          Joda時(shí)間庫(kù)的寫(xiě)法

          簡(jiǎn)潔的不得了哦

          問(wèn)題3:Date還不能直接轉(zhuǎn)LocalDate,這還有天理嗎?


          private?LocalDate?dateToLocalDate(Date date)?{
          ????Instant instant = date.toInstant();
          ????return?LocalDate.from(instant);
          }


          居然報(bào)異常了

          所以,Java8時(shí)間庫(kù)雖然進(jìn)步很大,但在可用性上還真差點(diǎn)意思,Java程序員已經(jīng)比較苦逼啦,能不能體量體量撒,期待后續(xù)版本會(huì)繼續(xù)迭代吧,讓我們拭目以待。

          作者:大話JAVA

          www.toutiao.com/i6886042266360775181

          -End-


          全棧架構(gòu)社區(qū)交流群

          ?「全棧架構(gòu)社區(qū)」建立了讀者架構(gòu)師交流群,大家可以添加小編微信進(jìn)行加群。歡迎有想法、樂(lè)于分享的朋友們一起交流學(xué)習(xí)。


          掃描添加好友邀你進(jìn)架構(gòu)師群,加我時(shí)注明姓名+公司+職位】
          看完本文有收獲?請(qǐng)轉(zhuǎn)發(fā)分享給更多
          瀏覽 34
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲在线小视频 | 午夜成人精品视频免费在线观看 | 成人做爰黄AA片免费看三区 | 无码精品一区二区三区四区网站 | 中文在线成人а√天堂官网 |