欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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
相关标签: Joda Joda Time