摘要:由于之前的,都是线程不安全的,所以就十分受欢迎。微笑工具类部分如下完整版点次链接如果不够用可以自己添加年月日时分秒年月日年月日时分后面的工具类代码还有很多,比如获取一个季度的最后一天,诸如此类,就不贴了。
由于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,点赞哦
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/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 ...
阅读 2954·2021-09-22 15:18
阅读 3376·2019-08-30 15:54
阅读 3245·2019-08-30 15:53
阅读 548·2019-08-30 14:12
阅读 792·2019-08-29 17:01
阅读 2181·2019-08-29 14:04
阅读 1358·2019-08-29 13:09
阅读 838·2019-08-26 17:40