JodaTime 时间处理
程序员文章站
2022-05-24 16:10:50
...
最近看别人在谈项目中时间处理的问题,jdk提供的Date好多方法都废弃了,现在基本上都是统一用Calendar来处理,用过Calendar处理日期的想必都有感觉,Calendar是一个笨重的东西,计算时间的时候更是劣势尽显,代码冗余很高,现在推荐一个非常好的时间处理类库:Joda Time
1 使用到的jar包
<dependency> <groupId>joda-time</groupId> <artifactId>joda-time</artifactId> <version>2.3</version> </dependency>
2 常用类
DateTime, LocalDate, LocalTime
(1)demo
DateTime dateTime = new DateTime(2000, 1, 1, 0, 0, 0, 0); System.out.println(dateTime.plusDays(45).plusMonths(1).dayOfWeek() .withMaximumValue().toString("E MM/dd/yyyy HH:mm:ss.SSS");
很方便的指定某一个具体的时间;很方便的对年月日时分秒进行增减运算
DateTime和LocalDate的区别是DateTime包含所属时区及时间相关的一系列的属性,LocalDate只是单纯的时间,没有其他的一系列的属性;DateTime把年月日时分秒抽象为Property,提供了一系列的操作方法
(2)针对于上面时间类型的格式化,Joda Time做了很好的支持,可以使用自己的格式化标准, 也可以支持SimpleDateFormat的标准格式化格式
(2.1)对本身格式化的支持
DateTime dateTime = SystemFactory.getClock().getDateTime(); dateTime.toString(ISODateTimeFormat.basicDateTime()); dateTime.toString(ISODateTimeFormat.basicDateTimeNoMillis()); dateTime.toString(ISODateTimeFormat.basicOrdinalDateTime()); dateTime.toString(ISODateTimeFormat.basicWeekDateTime());结果:
20090906T080000.000-0500 20090906T080000-0500 2009249T080000.000-0500 2009W367T080000.000-0500
(2.2)对simpleDateFromat标准格式化的支持:
DateTime dateTime = SystemFactory.getClock().getDateTime(); dateTime.toString("MM/dd/yyyy hh:mm:ss.SSSa"); dateTime.toString("dd-MM-yyyy HH:mm:ss"); dateTime.toString("EEEE dd MMMM, yyyy HH:mm:ssa"); dateTime.toString("MM/dd/yyyy HH:mm ZZZZ"); dateTime.toString("MM/dd/yyyy HH:mm Z");
(3) 与Java的互操作性
DateTime提供toDate方法,可以转换成java.Util.Date,DateTime的构造函数可以接收Calendar类型的参数
一个更详细的参考:http://h819.iteye.com/blog/611099
上一篇: java 堆栈的区别
下一篇: 用Jekyll写Github Pages