JAva 8 LocalDate LocalDateTimeなどの時間類紹介

8586 ワード

この文章は主にjava 8における新しいDateとTime APIの実戦である.新しいDateとTimeクラスはjava開発者コミュニティから始まった.Java 8以前から存在していたDateクラスは非難されており、サードパーティのdateライブラリjoda-timeを使用する人が多い.Java 8のdateとtime apiはjodatimeの著者が開発に参加し、JSR 310のすべての内容を実現した.これらの新しいapiはjava.timeの下にあります.
サードパーティのjoda-time、date 4 jが十分強い以上、java 8はなぜ彼を再実現しなければならないのか、一部の理由はこれらのサードパーティのライブラリに互換性の問題があるためである.例えば、標準的なJSF日付変換器とjoda-time apiは互換性がなく、使用するたびに自分の変換器を書く必要があるため、標準化apiは必要であり、JSR 310がある.JAva 8では彼のすべての規定内容を実現した.新しいDateクラスとTimeクラスの背後にある設計原則:
可変クラスjava 8以前はDateクラスは可変クラスでした.マルチスレッド環境で使用する場合、プログラミング担当者はDateオブジェクトのスレッドのセキュリティを確認する必要があります.Java 8のDateとTime APIは、スレッドが安全な可変クラスを提供します.プログラミング担当者は同時の問題を考慮する必要はありません.レルムモデル駆動設計方法新しい日付と時間のカテゴリは、ドメイン駆動設計に従います.開発者にとって,方法やクラスの機能を理解することは容易である.
JAva.time.LocalDate:LocalDateは日付のみを提供し、時間情報は提供しません.可変クラスであり、スレッドは安全です.
package org.smarttechie;
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
/**
* This class demonstrates JAVA 8 data and time API
* @author Siva Prasad Rao Janapati
* */
public class DateTimeDemonstration {
/**
* @param args
*/
public static void main(String[] args) {
   //Create date LocalDate localDate = LocalDate.now();
    System.out.println("The local date is :: " + localDate); 
   //Find the length of the month. That is, how many days are there for this month.
   System.out.println("The number of days available for this month:: " + localDate.lengthOfMonth()); 
   //Know the month name
   System.out.println("What is the month name? :: " + localDate.getMonth().name()); 
   //add 2 days to the today's date.
   System.out.println(localDate.plus(2, ChronoUnit.DAYS)); 
   //substract 2 days from today
   System.out.println(localDate.minus(2, ChronoUnit.DAYS)); 
   //Convert the string to date
   System.out.println(localDate.parse("2017-04-07"));
  }
}

JAva.time.LocalTime:LocalTimeは日付情報ではなく時間のみを提供し、可変クラスでスレッドが安全です.
import java.time.LocalTime;
import java.time.temporal.ChronoUnit;
/**
* This class demonstrates JAVA 8 data and time API
* @author Siva Prasad Rao Janapati
* */
public class DateTimeDemonstration {
/**
* @param args
*/
public static void main(String[] args) {
   //Get local time
   LocalTime localTime = LocalTime.now();
   System.out.println(localTime);
  //Get the hour of the day
  System.out.println("The hour of the day:: " + localTime.getHour());
  //add 2 hours to the time.
  System.out.println(localTime.plus(2, ChronoUnit.HOURS));
  //add 6 minutes to the time.
  System.out.println(localTime.plusMinutes(6));
  //substract 2 hours from current time
  System.out.println(localTime.minus(2, ChronoUnit.HOURS));
 }
}

JAva.time.LocalDateTime:LocalDateTimeは、可変クラスでスレッドが安全な時間と日付の情報を提供します.
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
/**
* This class demonstrates JAVA 8 data and time API
* @author Siva Prasad Rao Janapati
*
*/
public class DateTimeDemonstration {
/**
* @param args
*/
public static void main(String[] args) {
    //Get LocalDateTime object
    LocalDateTime localDateTime = LocalDateTime.now();
    System.out.println(localDateTime);
    //Find the length of month. That is, how many days are there for this month.
    System.out.println("The number of days available for this month:: " + localDateTime.getMonth().length(true));
    //Know the month name
    System.out.println("What is the month name? :: " + localDateTime.getMonth().name());
    //add 2 days to today's date.
    System.out.println(localDateTime.plus(2, ChronoUnit.DAYS));
    //substract 2 days from today
    System.out.println(localDateTime.minus(2, ChronoUnit.DAYS));
  }
}

JAva.time.Year:Yearは、可変クラスでスレッドが安全な年の情報を提供します.
import java.time.Year;
import java.time.temporal.ChronoUnit;
/**
* This class demonstrates JAVA 8 data and time API
* @author Siva Prasad Rao Janapati
*
*/
public class DateTimeDemonstration {
/**
* @param args
*/
public static void main(String[] args) {
   //Get year
   Year year = Year.now();
   System.out.println("Year ::" + year);
   //know the year is leap year or not
   System.out.println("Is year[" +year+"] leap year?"+ year.isLeap());
  }
}

JAva.time.Duration:Durationは、2つの指定された日付の間に何秒、何ミリ秒が含まれているかを計算するために使用され、可変クラスでスレッドが安全です.
JAva.time.Period:Periodは、2つの指定された日付の間に何日、何ヶ月、または何年が含まれているかを計算するために使用され、可変クラスでスレッドが安全です.
import java.time.LocalDate;
import java.time.Period;
import java.time.temporal.ChronoUnit;
/**
* This class demonstrates JAVA 8 data and time API
* @author Siva Prasad Rao Janapati
*
*/
public class DateTimeDemonstration {
/**
* @param args
*/
public static void main(String[] args) {
   LocalDate localDate = LocalDate.now();
   Period period = Period.between(localDate, localDate.plus(2, ChronoUnit.DAYS));
   System.out.println(period.getDays());
  }
}