国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Java時間處理第三方包:Joda-Time

Dongjie_Liu / 1212人閱讀

摘要:在之前的版本,對日期時間的處理相當麻煩,有些方法設計非常反人類。體驗對比之前的處理方式,使用了之后,代碼整個神清氣爽了很多。

Joda-Time provides a quality replacement for the Java date and time classes.
Joda-Time is the de facto standard date and time library for Java prior to Java SE 8. Users are now asked to migrate to java.time (JSR-310).

JDK在8之前的版本,對日期時間的處理相當麻煩,有些方法設計非常反人類。而Joda-Time使用起來不僅方便,而且可讀性強。雖然JDK 8引用了新的時間處理類,而且參與設計的人也正是Joda-Time的作者,但是由于各種原因,很多項目還是使用的JDK7,使用Joda-Time還是一個不錯的選擇。

Joda-Time體驗

對比之前JDK的處理方式,使用了Joda-Time之后,代碼整個神清氣爽了很多。接下來就用一些簡單的例子來對比一下JDk和Joda-Time的的使用。

依賴

只需要引用一個包。


    joda-time
    joda-time
    2.3
創建日期

JDK的日期是Date:

Date date = new Date();

Joda-Time的日期是DateTime:

DateTime dateTime = new DateTime();

DateTime在創建的時候還可以輕松的指定特定的日期和時間:

DateTime dateTime = new DateTime(2016, 10, 01, 00, 00);
日期格式化

JDK使用的是SimpleDateFormat來進行日期的格式化:

Date date = new Date();
        
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateStr = sdf.format(date);

乍看之下用起來也不麻煩,但是SimpleDateFormat是非線程安全的。也就是說,如果在并發環境下,必須對SimpleDateFormat對象做同步處理,比如用synchronized,比如用ThreadLocal;或者每次都new一個新的SimpleDateFormat對象,缺點顯而易見,就是浪費資源。

而Joda-Time中的DateTime本身就有格式化的方法,對象直接調用即可:

DateTime dateTime = new DateTime();
String dateTimeStr = dateTime.toString("yyyy-MM-dd HH:mm:ss");

當然,如果要用轉換器,Joda-Time也提供了DateTimeFormatter:

DateTimeFormatter dtf = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
String dateTimeStr = dtf.print(dateTime);

而且DateTimeFormatter是不可變的,所以是線程安全的。

SimpleDateFormat和DateTimeFormatter也都可以將字符串轉換成日期:

String dateStr = "2016-09-22";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
    Date date = sdf.parse(dateStr);
    } catch (ParseException e) {
        e.printStackTrace();
    }
        
DateTimeFormatter dtf = DateTimeFormat.forPattern("yyyy-MM-dd");
DateTime dateTime = dtf.parseDateTime(dateStr);
日期計算

個人在Joda-Time使用中,最喜歡的是它的日期計算。

比如要得到40天前的日期,在JDK中,計算日期相當復雜,必須借助日歷Calendar來完成:

Date today = new Date();
Calendar calendar = Calendar.getInstance();
calendar.setTime(today); // 設置日歷
calendar.add(Calendar.DAY_OF_MONTH, -40); // 將日歷往回翻40天
Date beforeDay = calendar.getTime(); // 日歷返回日期

Joda-Time中,日期自帶日期計算功能,非常直觀:

DateTime today = new DateTime();
DateTime beforeDay = today.minusDays(40);

如果要計算兩個日期相差的天數,使用JDK是這樣實現的:

int diffDays = (int) ((today.getTime() - beforeDay.getTime()) / (24*60*60*1000));

Joda-Time提供了相關的方法來處理:

int diffDays = Days.daysBetween(yesterday, today).getDays();

除了天數,月數、年數計算起來都非常方便,比如月數:

int diffMonths = Months.monthsBetween(yesterday, today).getMonths();
兼容JDK日期

Joda-Time另一個使用起來非常方便的地方就是與JDK日期類的互相轉換。因為很多現成的接口可能是用JDk的日期作為入參或者出參,如果Joda-Time不能兼容,那很多方便就不復存在了。

// Date to DateTime
Date date = new Date();
DateTime dateTime = new DateTime(date);
        
// DateTime to Date
Date date2 = dateTime.toDate();
        
// Calendar to DateTime
Calendar calender = Calendar.getInstance();
DateTime dateTime2 =  new DateTime(calender);
        
// DateTime to Calendar
Calendar calendar2 = dateTime.toCalendar(Locale.CHINA);

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/66048.html

相關文章

  • 使用Gradle構建Java項目

    摘要:要從頭開始,請繼續使用構建。文件夾應包含項目運行單元測試的報告。由于該項目尚未進行任何單元測試,因此該報告無效。使用構建項目是啟動構建的首選方式。現在可用于構建項目。概要恭喜您現在已經創建了一個簡單而有效的構建文件,用于構建項目。 本指南將引導您使用Gradle構建一個簡單的Java項目。 你要構建什么 您將創建一個簡單的應用程序,然后使用Gradle構建它。 你需要什么 大約15分...

    xiaokai 評論0 收藏0
  • JodaTime開源時間/日期庫

    摘要:開源時間日期庫是很好的替代,另外中也推出了新的庫,設計理念與相似。令時間和日期值變得易于管理操作和理解。格式化一個日期時間的具體域包括個年月日時分秒毫秒星期,分別用不同字母表示。 此前Java處理時間日期所使用的 Date 和 Calendar 被詬病不已,Calendar 的主要問題對象可變,而像時間和日期這樣的類應該是不可變的,另外其概念模型也有不明確的地方,月份計算從0開始等等。...

    frolc 評論0 收藏0
  • 使用IDEA基于Maven搭建多模塊聚合工程(springmvc+spring+mybatis整合)

    摘要:最后運行,如下圖所示,就說明跑通了總結之前看別人的博客,有選擇項,自己弄死活跑不通。選擇那項,啥都不選選擇那項。還要注意打包方式,,, 一.工程目錄 下面是搭建之后的目錄showImg(https://segmentfault.com/img/remote/1460000015755454?w=407&h=467); 先看一下目錄關系 taotao-parent(父工程管理jar包的版...

    szysky 評論0 收藏0
  • 使用Maven構建Java項目

    摘要:要從頭開始,請繼續使用構建。現在您已經準備好使用構建項目,下一步是安裝。項目使用名為的文件定義。項目所屬的組或組織。默認情況下,所有依賴項都作為依賴項確定范圍。概要恭喜您已經為構建項目創建了一個簡單而有效的項目定義。 本指南將指導您使用Maven構建一個簡單的Java項目。 你要構建什么 您將創建一個提供一天中時間的應用程序,然后使用Maven構建它。 你需要什么 大約15分鐘 最喜...

    mushang 評論0 收藏0
  • 海量日志中統計次數最多的100個IP

    摘要:由于標題長度限制,原題是這樣某系統萬,每十分鐘統計一下請求次數最多的個。請求寫到日志的話,其實就是超大文件中統計問題。 由于標題長度限制,原題是這樣:某系統QPS100萬,每十分鐘統計一下請求次數最多的100個IP。ip請求寫到日志的話,其實就是超大文件中統計top k問題。10分鐘6億條記錄,大約是10G級別,所以對于一般單機處理來講不能一次性加載到內存計算。所以分治算法是處理這類問...

    Cheng_Gang 評論0 收藏0

發表評論

0條評論

Dongjie_Liu

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<