摘要:由于之前的,都是線程不安全的,所以就十分受歡迎。微笑工具類部分如下完整版點次鏈接如果不夠用可以自己添加年月日時分秒年月日年月日時分后面的工具類代碼還有很多,比如獲取一個季度的最后一天,諸如此類,就不貼了。
由于Java8 之前的Date,SimpleDateFormat都是線程不安全的,所以Joda time就十分受歡迎。即便是Java8新出了一套了線程安全類,我看了一下也差點寫的吐了血。。。。
如果你想直接拿去用,請移步到Github下載。
我這里依賴的是joda2.10,用的是junit4做的測試。
Talk is cheap, show me the fucking code(微笑)
完整版點次鏈接
import org.joda.time.DateTime; import org.joda.time.DateTimeConstants; import org.joda.time.format.DateTimeFormat; import org.joda.time.format.DateTimeFormatter; import java.util.Date; public class JodaDateUtil { public enum Pattern { //如果不夠用可以自己添加 yyyy_MM("yyyy-MM"), yyyyMM("yyyyMM"), yyyy_MM_dd("yyyy-MM-dd"), yyyyMMdd("yyyyMMdd"), yyyy_MM_dd_HH_mm_ss("yyyy-MM-dd HH:mm:ss"), yyyyMMddHHmmss("yyyyMMddHHmmss"), yyyy_MM_dd_HH_mm_ss_zh("yyyy年MM月dd日HH時mm分ss秒"), yyyy_MM_dd_HH_mm_ss_SSS("yyyy-MM-dd HH:mm:ss.SSS"), yyyy_MM_dd_zh("yyyy年MM月dd日"), yyyy_MM_dd_HH_mm_zh("yyyy年MM月dd日HH時mm分"); private String pattern; Pattern(String pattern) { this.pattern = pattern; } public String getPattern() { return pattern; } } public static Date str2date(String strTime, Pattern pattern) { DateTimeFormatter fmt = DateTimeFormat.forPattern(pattern.getPattern()); DateTime dateTime = fmt.parseDateTime(strTime); return dateTime.toDate(); } public static Date str2date(String time) { return str2date(time, Pattern.yyyy_MM_dd_HH_mm_ss); } public static String date2str(Date date, Pattern pattern) { DateTimeFormatter fmt = DateTimeFormat.forPattern(pattern.getPattern()); DateTime dateTime = new DateTime(date); return fmt.print(dateTime); }
后面的工具類代碼還有很多,比如獲取一個季度的最后一天,諸如此類,就不貼了。
測試類內容完整版鏈接:
public class JodaDateUtilTest { public static final String yyyy_MM = "2014-09"; public static final String yyyyMM = "201409"; public static final String yyyy_MM_dd = "2014-09-01"; public static final String yyyyMMdd = "20140901"; public static final String yyyy_MM_dd_HH_mm_ss = "2014-09-01 12:30:20"; public static final String yyyy_MM_dd_HH_mm_ss_SSS = "2014-09-01 12:30:20.100"; public static final DateTime dateTime; static { dateTime = new DateTime(2018, 8, 30, 12, 30, 20, 200); } @Test public void str2date() throws Exception { Date date = JodaDateUtil.str2date(yyyy_MM, JodaDateUtil.Pattern.yyyy_MM); System.out.println(date); date = JodaDateUtil.str2date(yyyy_MM_dd, JodaDateUtil.Pattern.yyyy_MM_dd); System.out.println(date); date = JodaDateUtil.str2date(yyyyMM, JodaDateUtil.Pattern.yyyyMM); System.out.println(date); date = JodaDateUtil.str2date(yyyyMMdd, JodaDateUtil.Pattern.yyyyMMdd); System.out.println(date); date = JodaDateUtil.str2date(yyyy_MM_dd_HH_mm_ss, JodaDateUtil.Pattern.yyyy_MM_dd_HH_mm_ss); System.out.println(date); date = JodaDateUtil.str2date(yyyy_MM_dd_HH_mm_ss_SSS, JodaDateUtil.Pattern.yyyy_MM_dd_HH_mm_ss_SSS); System.out.println(date); } @Test public void date2str() throws Exception { String str = JodaDateUtil.date2str(dateTime.toDate(), JodaDateUtil.Pattern.yyyy_MM); System.out.println(str); str = JodaDateUtil.date2str(dateTime.toDate(), JodaDateUtil.Pattern.yyyy_MM_dd); System.out.println(str); str = JodaDateUtil.date2str(dateTime.toDate(), JodaDateUtil.Pattern.yyyy_MM_dd_HH_mm_ss); System.out.println(str); str = JodaDateUtil.date2str(dateTime.toDate(), JodaDateUtil.Pattern.yyyy_MM_dd_HH_mm_ss_SSS); System.out.println(str); } @Test public void strToStr() throws Exception { String str = JodaDateUtil.strToStr(yyyy_MM_dd_HH_mm_ss_SSS, JodaDateUtil.Pattern.yyyy_MM_dd_HH_mm_ss_SSS, JodaDateUtil.Pattern.yyyy_MM); System.out.println(str); str = JodaDateUtil.strToStr(yyyy_MM_dd_HH_mm_ss_SSS, JodaDateUtil.Pattern.yyyy_MM_dd_HH_mm_ss_SSS, JodaDateUtil.Pattern.yyyy_MM_dd_zh); System.out.println(str); str = JodaDateUtil.strToStr(yyyy_MM_dd_HH_mm_ss_SSS, JodaDateUtil.Pattern.yyyy_MM_dd_HH_mm_ss_SSS, JodaDateUtil.Pattern.yyyy_MM_dd_HH_mm_zh); System.out.println(str); str = JodaDateUtil.strToStr(yyyy_MM_dd_HH_mm_ss_SSS, JodaDateUtil.Pattern.yyyy_MM_dd_HH_mm_ss_SSS, JodaDateUtil.Pattern.yyyy_MM_dd_HH_mm_ss_zh); System.out.println(str); } }
另外Joda底層會幫我們緩存500個Formatter,應該可以滿足正常的需求了。
另外,本人還將Joda與常見使用ThreadLocal包一層的SimpleDateFormatter,進行了轉換比較,發現Joda比它快大約一個數量級。。。。。
如果你還用著ThreadLocal還是趕緊換了吧。
Github地址https://github.com/codercuixi..., 本人也是小白,希望與大家共同進步,喜歡就follow,點贊哦
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/76696.html
摘要:在之前的版本,對日期時間的處理相當麻煩,有些方法設計非常反人類。體驗對比之前的處理方式,使用了之后,代碼整個神清氣爽了很多。 Joda-Time provides a quality replacement for the Java date and time classes.Joda-Time is the de facto standard date and time librar...
摘要:開源時間日期庫是很好的替代,另外中也推出了新的庫,設計理念與相似。令時間和日期值變得易于管理操作和理解。格式化一個日期時間的具體域包括個年月日時分秒毫秒星期,分別用不同字母表示。 此前Java處理時間日期所使用的 Date 和 Calendar 被詬病不已,Calendar 的主要問題對象可變,而像時間和日期這樣的類應該是不可變的,另外其概念模型也有不明確的地方,月份計算從0開始等等。...
摘要:要從頭開始,請繼續使用構建。文件夾應包含項目運行單元測試的報告。由于該項目尚未進行任何單元測試,因此該報告無效。使用構建項目是啟動構建的首選方式。現在可用于構建項目。概要恭喜您現在已經創建了一個簡單而有效的構建文件,用于構建項目。 本指南將引導您使用Gradle構建一個簡單的Java項目。 你要構建什么 您將創建一個簡單的應用程序,然后使用Gradle構建它。 你需要什么 大約15分...
摘要:要從頭開始,請繼續使用構建。現在您已經準備好使用構建項目,下一步是安裝。項目使用名為的文件定義。項目所屬的組或組織。默認情況下,所有依賴項都作為依賴項確定范圍。概要恭喜您已經為構建項目創建了一個簡單而有效的項目定義。 本指南將指導您使用Maven構建一個簡單的Java項目。 你要構建什么 您將創建一個提供一天中時間的應用程序,然后使用Maven構建它。 你需要什么 大約15分鐘 最喜...
摘要:比的更好用,并且完美兼容的時間點此訪問用戶向導地址當前最新版本地址基本對象日期時間輸出結果本地日期時間輸出結果本地日期輸出結果本地時間輸出結果與相互轉換輸出結果與相互轉換 Joda Time : 比JDK的Date,Calendar更好用,并且完美兼容的時間API. 點此訪問Joda Time User Guide 用戶向導地址 joda-time joda-time ...
閱讀 2972·2021-09-22 15:18
閱讀 3395·2019-08-30 15:54
閱讀 3274·2019-08-30 15:53
閱讀 589·2019-08-30 14:12
閱讀 814·2019-08-29 17:01
閱讀 2198·2019-08-29 14:04
閱讀 1379·2019-08-29 13:09
閱讀 862·2019-08-26 17:40