1. 程式人生 > >Joda-Time的使用以及其與jdk中時間型別的相互轉換

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