Joda-Time的使用以及其与jdk中时间类型的相互转换

Joda-Time存在的目的:

任何企业应用程序都需要处理时间问题。应用程序需要知道当前的时间点和下一个时间点,有时它们还必须计算这两个时间点之间的路径。使用 JDK 完成这项任务将非常痛苦和繁琐的,而Joda-Time就是在这样的背景下诞生的,所以说Joda-Time相较于原生的java中的Date和Calendar时间操作而言,功能更加的强大,但是操作却更加的简化,下面是其显示的代码示例:

package com.makotogroup.joda;

import java.util.Calendar;
import java.util.Date;
import java.util.Locale;

import org.apache.log4j.Logger;
import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;

public class TestDateTime {
  
  private static Logger log = Logger.getLogger(TestDateTime.class);
  
  /**
   * 获取当前时间
   * @return
   */
  public DateTime getCurrentTime(){
    
    return new DateTime();
  
  }

  public static void main(String[] args) {
    
    //当前的Joda-time版本为:joda-time-2.9.9.jar
    //Joda-time的版本不同,其支持的方法也不尽相同,比如说在joda-time-1.6.jar中,并不支持
    //DateTime.parse(String,DateTimeFormatter),而在joda-time-2.9.9.jar中是支持的
    
    TestDateTime testDateTime=new TestDateTime();
    //获取当前时间
    DateTime dateTime=testDateTime.getCurrentTime();
    //获取当前时间字符串
    String dateTimeString=dateTime.toString("yyyy-MM-dd HH:mm:ss");
    log.info("当前时间:"+dateTimeString);
    //获取年
    log.info("当前年:"+dateTime.getYear());
    //获取月
    log.info("当前月:"+dateTime.getMonthOfYear());
    //获取日
    log.info("当前日:"+dateTime.getDayOfMonth());
    //获取小时
    log.info("当前小时:"+dateTime.getHourOfDay());
    //获取分钟
    log.info("当前分钟:"+dateTime.getMinuteOfHour());
    //获取秒
    log.info("当前秒:"+dateTime.getSecondOfMinute());
    //获取毫秒
    log.info("当前毫秒:"+dateTime.getMillisOfSecond());
    //获取当前时间戳
    log.info("当前的时间戳为:"+dateTime.getMillis());
    //获取周
    log.info("当前周为:"+dateTime.getWeekOfWeekyear());
    //当前时区为(东八区:INFO  - +08:00):
    log.info("当前周为:"+dateTime.getZone().toString());
    
    //修改周:
    log.info("当前周加上两周,结果为:"+dateTime.plusWeeks(2).getWeekOfWeekyear());
    //减去2年
    log.info("减去两年,结果为:"+dateTime.plusYears(-2).getYear());
    
    //String转换为Joda-time
    DateTimeFormatter dtf=DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
    //方法一
    DateTime dateTime2 = DateTime.parse(dateTimeString, dtf);
    //方法二
    DateTime dateTime3=dtf.parseDateTime(dateTimeString);
    
    log.info("格式化后的结果1:"+dateTime2);
    log.info("格式化后的结果2:"+dateTime3);
    
    //将Joda-time转换成String
    log.info("Joda-time转换成String:"+dateTime.toString("yyyy-MM-dd HH:mm:ss a"));
    
    //将Date转换成Joda-time
    Date date=new Date();
    DateTime dateTime4=new DateTime(date);
    log.info("Date转DateTime:"+dateTime4);
    
    //将Joda-time转换成Date
    log.info("Joda-time转换成Date:"+dateTime4.toDate());
    
    //将Calendar转换成Joda-time
    Calendar calendar=Calendar.getInstance();
    DateTime dateTime5=new DateTime(calendar);
    log.info("将Calendar转换成DateTime:"+dateTime5);
    
    //Joda-time转换成Calendar
    Calendar calendar2=dateTime5.toCalendar(Locale.CHINA);
    log.info("将Joda-time转换成Calendar:"+calendar2);
    
    //自定义时间
    //参数分别是:年,月,日,时,分,秒,毫秒
    DateTime dateTime6=new DateTime(2015,1,1,1,1,1,1);
    log.info("自定义的时间:"+dateTime6.toString("yyyy-MM-dd HH:mm:ss a"));
    
    
    //将Joda-time转换成long类型
    log.info("Joda-time转换成long类型:"+dateTime6.getMillis());
    //将long类型转换成Joda-time
    long time =  1420045261001L;
    DateTime dateTime7 = new DateTime(time);
    log.info("long转换成Joda-time:"+dateTime7);
    
  }

}

最后附上Joda-Time api文档的官方地址:

http://www.joda.org/joda-time/apidocs/index.html


你可能感兴趣的:(其他)