Java 8 の新しい Date および Time クラスの詳細な紹介

黄舟
リリース: 2017-03-31 11:12:26
オリジナル
1607 人が閲覧しました

この記事は主にJava8の新しいDateTimeAPIの実戦について書いています。新しい Date クラスと Time クラスは、Java 開発者コミュニティからの待望のリクエストの結果です。 Java8 より前に存在した Date クラスは常に批判されており、多くの人がサードパーティの日付ライブラリ joda-time を使用することを選択しています。 Java8 の日付と時刻 API は、jodatime の作成者によって開発され、JSR310 のすべての内容を実装しています。これらの新しい API は java.time パッケージの下にあります。

サードパーティの joda-time と date4j はすでに十分強力であるのに、なぜ Java8 でそれらを再実装する必要があるのでしょうか? 理由の 1 つは、これらのサードパーティのライブラリには、標準の JSF 日付コンバーターや、 joda -time API は互換性がありません。使用するたびに独自のコンバーターを作成する必要があるため、JSR310 では、そのすべての規定が java8 で実装されています。新しい Date クラスと Time クラスの背後にある

設計原則

:

不変クラス

Java8 より前では、Date クラスは変更可能なクラスでした。マルチスレッド環境で使用する場合、プログラマは Date オブジェクトがスレッドセーフであることを確認する必要があります。 Java 8 の Date and Time API は、スレッドセーフな不変クラスを提供します。プログラマは同時実行性の問題を考慮する必要はありません。

ドメイン

モデル 駆動型 設計方法論 新しい日付と時刻のカテゴリは、「ドメイン駆動型設計」に続きます。開発者はメソッドとクラスの機能を簡単に理解できます。

次に、新しい日付と時刻 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 は時間のみを提供しますが、日付情報は提供しません。これは不変クラスでスレッドセーフです。

package org.smarttechie;
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は時刻と日付の情報を提供します。これは不変クラスでスレッドセーフです。

package orr.smarttechie;
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は年の情報を提供します。不変クラスでスレッドセーフです。

package orr.smarttechie;
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 つの日付の間に何日、何ヶ月、何年があるかを計算するために使用されます。これは不変クラスであり、スレッドセーフです


以上がJava 8 の新しい Date および Time クラスの詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!