JodaTime 时间处理

  最近看别人在谈项目中时间处理的问题,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

你可能感兴趣的:(joda time,Joda)