ホームページ Java &#&チュートリアル Java 8 の新しい Date および Time クラスの詳細な紹介

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

Mar 31, 2017 am 11:12 AM

この記事は主に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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Java 8で1年前または1年後の日付を計算するにはどうすればよいですか? Java 8で1年前または1年後の日付を計算するにはどうすればよいですか? Apr 26, 2023 am 09:22 AM

Java8 は、minus() メソッドを使用して 1 年前の日付または 1 年後の日付を計算し、1 年前の日付を計算します。 packagecom.shxt.demo02;importjava.time.LocalDate;importjava.time.temporal.ChronoUnit;publicclassDemo09{publicstaticvoidmain(String[ ]args ){LocalDatetoday=LocalDate.now();LocalDateprevious Year=today.minus(1,ChronoUni

PHP 警告: date() はパラメータ 2 が長いことを予期しており、解決策が与えられた文字列です PHP 警告: date() はパラメータ 2 が長いことを予期しており、解決策が与えられた文字列です Jun 22, 2023 pm 08:03 PM

PHP プログラムを使用して開発する場合、警告メッセージやエラー メッセージが表示されることがよくあります。その中で、表示される可能性のあるエラー メッセージの 1 つは、PHPWarning:date()expectsparameter2tobelong,stringgiven です。エラー メッセージの意味は次のとおりです。関数 date() の 2 番目のパラメーターは長整数 (long) であることが予期されていますが、実際に渡されるのは文字列 (string) です。それで、私たちは

現在のタイムスタンプに基づいてファイル/フォルダーを作成し、名前を付ける方法 現在のタイムスタンプに基づいてファイル/フォルダーを作成し、名前を付ける方法 Apr 27, 2023 pm 11:07 PM

システムのタイムスタンプに基づいてファイルやフォルダーを自動的に作成し、名前を付ける方法を探している場合は、ここが最適な場所です。このタスクを達成するための非常に簡単な方法があります。作成されたフォルダーまたはファイルは、ファイルのバックアップの保存、日付に基づいたファイルの並べ替えなど、さまざまな目的に使用できます。この記事では、Windows 11/10 でファイルとフォルダーを自動的に作成し、システムのタイムスタンプに基づいて名前を付ける方法を、非常に簡単な手順で説明します。使用される方法はバッチ スクリプトであり、非常に簡単です。この記事を楽しんで読んでいただければ幸いです。セクション 1: システムの現在のタイムスタンプに基づいてフォルダーを自動的に作成し、名前を付ける方法 ステップ 1: まず、フォルダーを作成する親フォルダーに移動します。

タイムパッケージの単調クロック処理 タイムパッケージの単調クロック処理 Aug 04, 2023 pm 05:45 PM

今日は主に golang time パッケージの時間適用方法を見ていきます。この 2 つの間の一般的なルールは、時間を伝えるために「ウォールタイム」が使用され、時間を測定するために「モノトニッククロック」が使用されるということですが、他のクロック処理方法もあります。

Date クラスの getTime() メソッドを使用して日付のミリ秒表現を取得する方法 Date クラスの getTime() メソッドを使用して日付のミリ秒表現を取得する方法 Jul 24, 2023 am 11:42 AM

Date クラスの getTime() メソッドを使用して日付のミリ秒表現を取得する方法 Java では、Date クラスは日付と時刻を表すために使用されるクラスです。これは、日付オブジェクトに関する情報を操作および取得するための便利なメソッドを多数提供します。その中でも getTime() メソッドは Date クラスの重要なメソッドであり、日付オブジェクトのミリ秒表現を返すことができます。次に、このメソッドを使用して日付のミリ秒表現を取得する方法を詳しく説明し、対応するコード例を示します。 Date クラスの使用

Java で時刻を処理する Date クラスと SimpleDateFormat クラスを使用するメソッドと使用法の紹介 Java で時刻を処理する Date クラスと SimpleDateFormat クラスを使用するメソッドと使用法の紹介 Apr 21, 2023 pm 03:01 PM

1. はじめに java.util パッケージの Date クラスは、ミリ秒単位の正確な特定の時刻を表します。 Date クラスを使用したい場合は、Date クラスを導入する必要があります。 Date クラスに年を直接書き込んでも、正しい結果は得られません。 Java の日付は 1900 年から計算されるため、最初のパラメータに 1900 年からの年数を入力すれば、必要な年が得られます。月は 1 を引く必要がありますが、日は直接挿入できます。この方法はほとんど使用されず、2 番目の方法が一般的に使用されます。 yyyy-MM-ddなどの特定の形式に従った文字列をDate型データに変換する方法です。まず、Date型Dateのオブジェクトを定義します。

Java 8を使用して1週間後の日付を計算するにはどうすればよいですか? Java 8を使用して1週間後の日付を計算するにはどうすればよいですか? Apr 21, 2023 pm 11:01 PM

Java8 で 1 週間後の日付を計算する方法 この例では、1 週間後の日付を計算します。 LocalDate 日付には時間情報が含まれません。その plus() メソッドは、日、週、月を追加するために使用されます。これらの時間単位は ChronoUnit クラスで宣言されます。 LocalDate も不変型なので、戻った後に変数を使用して値を割り当てる必要があります。 packagecom.shxt.demo02;importjava.time.LocalDate;importjava.time.temporal.ChronoUnit;publicclassDemo08{publicstaticvoidmain(String[

Java で Stringbuild、Date、Calendar クラスを使用する方法 Java で Stringbuild、Date、Calendar クラスを使用する方法 May 22, 2023 pm 04:52 PM

Stringbuild クラス String クラスのオブジェクト内容は変更できないため、結合するたびに新しい String オブジェクトが構築され、時間がかかり、メモリ領域を無駄に消費します。このとき、StringBuild を通じてこの問題を解決する必要があります。 Javaが提供するクラスです。StringBuilderは、変数文字列とも呼ばれます。Stringと同様の文字列バッファであり、コンテナとみなすことができます。コンテナには多くの文字列を保持できます。変数とは、StringBuilderオブジェクトの内容を意味します構築メソッド publicStringBuilder(): 空のバッファを作成します publicStringBuilder(Stringsr

See all articles