摘要:由于之前的,都是線程不安全的,所以就十分受歡迎。微笑工具類部分如下完整版點(diǎn)次鏈接如果不夠用可以自己添加年月日時(shí)分秒年月日年月日時(shí)分后面的工具類代碼還有很多,比如獲取一個(gè)季度的最后一天,諸如此類,就不貼了。
由于Java8 之前的Date,SimpleDateFormat都是線程不安全的,所以Joda time就十分受歡迎。即便是Java8新出了一套了線程安全類,我看了一下也差點(diǎn)寫的吐了血。。。。
如果你想直接拿去用,請(qǐng)移步到Github下載。
我這里依賴的是joda2.10,用的是junit4做的測(cè)試。
Talk is cheap, show me the fucking code(微笑)
完整版點(diǎn)次鏈接
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時(shí)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時(shí)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); }
后面的工具類代碼還有很多,比如獲取一個(gè)季度的最后一天,諸如此類,就不貼了。
測(cè)試類內(nèi)容完整版鏈接:
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底層會(huì)幫我們緩存500個(gè)Formatter,應(yīng)該可以滿足正常的需求了。
另外,本人還將Joda與常見(jiàn)使用ThreadLocal包一層的SimpleDateFormatter,進(jìn)行了轉(zhuǎn)換比較,發(fā)現(xiàn)Joda比它快大約一個(gè)數(shù)量級(jí)。。。。。
如果你還用著ThreadLocal還是趕緊換了吧。
Github地址https://github.com/codercuixi..., 本人也是小白,希望與大家共同進(jìn)步,喜歡就follow,點(diǎn)贊哦
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/76696.html
摘要:在之前的版本,對(duì)日期時(shí)間的處理相當(dāng)麻煩,有些方法設(shè)計(jì)非常反人類。體驗(yàn)對(duì)比之前的處理方式,使用了之后,代碼整個(gè)神清氣爽了很多。 Joda-Time provides a quality replacement for the Java date and time classes.Joda-Time is the de facto standard date and time librar...
摘要:開(kāi)源時(shí)間日期庫(kù)是很好的替代,另外中也推出了新的庫(kù),設(shè)計(jì)理念與相似。令時(shí)間和日期值變得易于管理操作和理解。格式化一個(gè)日期時(shí)間的具體域包括個(gè)年月日時(shí)分秒毫秒星期,分別用不同字母表示。 此前Java處理時(shí)間日期所使用的 Date 和 Calendar 被詬病不已,Calendar 的主要問(wèn)題對(duì)象可變,而像時(shí)間和日期這樣的類應(yīng)該是不可變的,另外其概念模型也有不明確的地方,月份計(jì)算從0開(kāi)始等等。...
摘要:要從頭開(kāi)始,請(qǐng)繼續(xù)使用構(gòu)建。文件夾應(yīng)包含項(xiàng)目運(yùn)行單元測(cè)試的報(bào)告。由于該項(xiàng)目尚未進(jìn)行任何單元測(cè)試,因此該報(bào)告無(wú)效。使用構(gòu)建項(xiàng)目是啟動(dòng)構(gòu)建的首選方式?,F(xiàn)在可用于構(gòu)建項(xiàng)目。概要恭喜您現(xiàn)在已經(jīng)創(chuàng)建了一個(gè)簡(jiǎn)單而有效的構(gòu)建文件,用于構(gòu)建項(xiàng)目。 本指南將引導(dǎo)您使用Gradle構(gòu)建一個(gè)簡(jiǎn)單的Java項(xiàng)目。 你要構(gòu)建什么 您將創(chuàng)建一個(gè)簡(jiǎn)單的應(yīng)用程序,然后使用Gradle構(gòu)建它。 你需要什么 大約15分...
摘要:要從頭開(kāi)始,請(qǐng)繼續(xù)使用構(gòu)建。現(xiàn)在您已經(jīng)準(zhǔn)備好使用構(gòu)建項(xiàng)目,下一步是安裝。項(xiàng)目使用名為的文件定義。項(xiàng)目所屬的組或組織。默認(rèn)情況下,所有依賴項(xiàng)都作為依賴項(xiàng)確定范圍。概要恭喜您已經(jīng)為構(gòu)建項(xiàng)目創(chuàng)建了一個(gè)簡(jiǎn)單而有效的項(xiàng)目定義。 本指南將指導(dǎo)您使用Maven構(gòu)建一個(gè)簡(jiǎn)單的Java項(xiàng)目。 你要構(gòu)建什么 您將創(chuàng)建一個(gè)提供一天中時(shí)間的應(yīng)用程序,然后使用Maven構(gòu)建它。 你需要什么 大約15分鐘 最喜...
摘要:比的更好用,并且完美兼容的時(shí)間點(diǎn)此訪問(wèn)用戶向?qū)У刂樊?dāng)前最新版本地址基本對(duì)象日期時(shí)間輸出結(jié)果本地日期時(shí)間輸出結(jié)果本地日期輸出結(jié)果本地時(shí)間輸出結(jié)果與相互轉(zhuǎn)換輸出結(jié)果與相互轉(zhuǎn)換 Joda Time : 比JDK的Date,Calendar更好用,并且完美兼容的時(shí)間API. 點(diǎn)此訪問(wèn)Joda Time User Guide 用戶向?qū)У刂? joda-time joda-time ...
閱讀 2987·2021-09-22 15:18
閱讀 3405·2019-08-30 15:54
閱讀 3284·2019-08-30 15:53
閱讀 606·2019-08-30 14:12
閱讀 826·2019-08-29 17:01
閱讀 2213·2019-08-29 14:04
閱讀 1405·2019-08-29 13:09
閱讀 875·2019-08-26 17:40