検索

キーワード


【Java】よく使う日時クラス解説まとめ

  • 公開日:2021-01-26 08:21:20
  • 最終更新日:2021-01-26 08:20:28
【Java】よく使う日時クラス解説まとめ


こんにちは、駆け出しエンジニアの伊藤です。
東京ITカレッジのJava研修で学んだ内容を復習も兼ねて記事にしたいと思います。
今回は、日付時刻のまとめとして、日付時刻に関する基本的なクラスやメソッド等の概要を紹介していきます。
より詳しく知りたい!という方は、リンク先の関連記事をご参考にしてください。
Javaやプログラムについて勉強し始めた方の参考になれば幸いです!
(eclipseを使用して計算を行っています)

※この記事で概要を紹介している内容の関連記事
【Java】日時取得の Date/Calendar クラスの基本と使い方を解説
【Java】Date/Calendarの日時フォーマット/日時比較/日時計算クラス使い方解説
【Java】Java8からの現在や指定日時取得 9クラスの基本と使い方を解説
【Java】Java8からの日時フォーマットクラスの使い方解説
【Java】Java8からの日時計算/日時比較クラスの使い方を解説
【Java】日付時刻の変換方法(新旧 API 相互変換、Data/Calendar の変換)
【Java】処理時間/経過時間計測(ミリ秒)に使える2つのメソッドを解説


日付時刻ー従来APIとDateAndTimeAPI

Javaには大きく分け、2つの日付時刻を取得する方法があります。

従来API-Java初期から日付時刻管理を行っていたJavaの日付時刻に関するクラス群

DateAndTimeAPI-JDK8から採用された新たな日付時刻に関するクラス群

 現在はDateAndTimeAPIで日付時刻のプログラムを書くことが主になっています。しかし、JDK7までに書かれたプログラムも多くあるので従来APIのクラスやメソッドを覚えておくことも大切です。


日付時刻の取得

従来API-Dateクラス・Calendarクラス

【Java】日時取得の Date/Calendar クラスの基本と使い方を解説

Java初期から両クラスで日付時刻管理を行っており、ここでは日付時刻を取得する方法を載せています。

この記事では、


現在の日付時刻を取得する方法

  現在日付時刻取得-Dateクラス

指定した日付時刻を取得する方法

  特定の日時指定-Calendarクラス(getメソッド、setメソッド)


主に上記の2点を中心に解説しています。

他にも、経過ミリ秒(long型)からDate型への変換、ミリ秒単位での経過ミリ秒を取得するcurrentTimeMillisメソッドについて等にも触れています。

従来APIにおける日付時刻取得方法を知りたい方は、ぜひタメになるのでご一読してみてください!


【Java】日時取得の Date/Calendar クラスの基本と使い方を解説




DateAndTimeAPI -新API

【Java】Java8からの現在や指定日時取得 9クラスの基本と使い方を解説

JDK8より導入された、日付と時刻に関する新しいAPI(これ以降は、DateAndTimeAPIと記載しています)です。

現在は、DateAndTimeAPIで日付時刻を取得するのが一般的になっています。

この記事では、


現在日時取得の方法

  タイムゾーンなしーLocalDate・LocalTime・LocalDateTimeクラス

  タイムゾーンありーOffsetTime・OffsetDateTime・ZonedDateTimeクラス

  地域ベースを指定-ZonedIdクラス

  現在時刻の取得-now()メソッド

日付時刻を指定して、取得する方法

  特定の日時指定-ofメソッド

文字列から日付時刻を生成する方法

  日時文字列から日時取得-parseメソッド


主に上記3点を中心に解説しています。

他にも、OffsetDateTimeクラスとZonedDateTimeクラスの違い・オフセットタイムゾーンについて・時差について等にも触れています。

DateAndTimeAPIにおける日付時刻取得方法を知りたい方は、ぜひタメになるのでご一読してみてください!


【Java】Java8からの現在や指定日時取得 9クラスの基本と使い方を解説



フォーマット

フォーマットとは、指定した書式文字列に整形するために使用します。



従来APIでのフォーマット

【Java】Date/Calendarの日時フォーマット/日時比較/日時計算クラス使い方解説

この記事の冒頭部分では、従来APIにおいてフォーマットを指定する方法について解説をしています。


フォーマット指定方法

  フォーマット指定-SimpleDateFormatクラス

文字列(String型)からDate型への変換方法

  日時文字列から日時取得-parseメソッド

Date型から文字列(String型)への変換方法

  日時を文字列へ変換-formatメソッド、toStringメソッド


主に上記3点を中心に解説しています。

他にも、ParseExceptionエラーの発生について、日時のパターン文字について等にも触れています。

従来APIにおける日付時刻のフォーマットを知りたい方は、ぜひタメになるのでご一読してみてください!


【Java】Date/Calendarの日時フォーマット/日時比較/日時計算クラス使い方解説



DateAndTimeAPIでのフォーマット

【Java】Java8からの日時フォーマットクラスの使い方解説

この記事では、DateAndTimeAPIにおいてフォーマットを指定する方法を解説しています。


ISO_8601について

独自フォーマットで表示する方法

  指定した書式で文字列を取得-formatメソッド

  指定されたパターンを使用してフォーマッタを作成-ofPatternメソッド

和暦表示する方法

  和暦表示にはーJapaneseDateクラス

文字列から日時オブジェクトを取得、または文字列の解析をする方法-parseメソッド

  呼び出しクラスによるparseメソッドについて


主に上記4点を中心に解説しています。

parseメソッドには、3つの取得や解析方法があり、詳しく載せてあります。

DateAndTimeAPIの日付時刻フォーマットについて知りたい方は、ぜひタメになるのでご一読してみてください!



【Java】Java8からの日時フォーマットクラスの使い方解説



日付時刻の演算

日付時刻の演算では、基本の日付を軸に何日後の日付を取得したり、個別に指定した日時を取得したりすることができます。



従来APIでの日付時刻演算

【Java】Date/Calendarの日時フォーマット/日時比較/日時計算クラス使い方解説

日時などの細かい計算はDateクラスではなくCalendarクラスのメソッドで行います。

この記事では、


日付時刻の加減算方法

  Calendarクラスで取得した日時を基準にする加減算-addメソッド


日時フィールドのことや、Date型での演算について等にも触れています。

従来APIにおける日付時刻演算について知りたい方は、ぜひタメになるのでご一読ください!


【Java】Date/Calendarの日時フォーマット/日時比較/日時計算クラス使い方解説




DateAndTimeAPIでの日付時刻演算、一部要素の変更

【Java】Java8からの日時計算/日時比較クラスの使い方を解説

DateAndTimeAPIでの日付時刻演算には多くのメソッドが用意されています。

この記事では、


日付時刻の加減算方法、指定した値への一部要素変更方法

  日時情報に加算をして、新しい日時情報のインスタンス生成-plusメソッド(plusYears、plusDays、plusMonths、plusWeeks)

  日時情報に減算をして、新しい日時情報のインスタンス生成-minusメソッド(minusYears、minusDays、minusMonths、minusWeeks)

  指定した時間の単位量を加減算ーplus、minusメソッド(TemporalAmountインタフェースを実装するPeriodクラス)

  指定した時間の単位自体を加減算-plus、minusメソッド(引数のTemporalUnitに、計算の単位として渡すChronoUnitの定数を指定

  日時情報に引数で指定した値に変換し、新しいインスタンスを生成-withメソッド

  日時情報に列挙型定数を指定し、値を変換し、新しいインスタンスを生成-whthメソッド(ChronoField定数使用)


上記のことについて解説しています。

plusメソッド、minusメソッド共に引数で指定するフィールドもあり、ややこしい部分ですが1つずつ詳しく触れています。

列挙型ChronoUnit定数、列挙型ChronoField定数の一例も載せています。

DateAndTimeAPIにおける日付時刻演算について知りたい方は、ぜひタメになるのでご一読ください!


【Java】Java8からの日時計算/日時比較クラスの使い方を解説




日付時刻の比較

日付時刻の比較とは、Aという日付は基本の日付の後か前か、または同日かを判定することができます。



従来APIでの日付時刻比較

【Java】Date/Calendarの日時フォーマット/日時比較/日時計算クラス使い方解説

DateやCalendarで取得した日時を比較することで、2つの取得時間のどちらが先かを判定したり、かかった時間を測ったりすることができます。

この記事では、


Date型での日付時刻判定

Calendar型での日付時刻判定

  両クラスにおいて判定に使うメソッド

   指定日時より前か判断-beforeメソッド

   指定日時より後か判断-afterメソッド

   指定日時と同じか判断-equalsメソッド

   long型数値での比較-compareToメソッド


上記のことについて解説しています。

判定基準や、実際にサンプルプログラムも載せてあります。

従来APIにおける日付時刻比較について知りたい方は、ぜひタメになるのでご一読ください!


【Java】Date/Calendarの日時フォーマット/日時比較/日時計算クラス使い方解説



DateAndTimeAPIでの日付時刻比較

【Java】Java8からの日時計算/日時比較クラスの使い方を解説

DateAndTimeAPIの日付時刻の比較には、5つのメソッドが用意されています。

この記事では、


日付時刻比較

  比較日時の大小判定-compareToメソッド

  比較日時が同日か判定-equalsメソッド

  比較日時が同日か判定-isEqualメソッド

  比較日時が過去か判定-isBeforeメソッド

  比較日時が未来か判定-isAfterメソッド


上記のことについて解説しています。

equalsメソッドとisEqualメソッドはどちらも同日判定を行っていますが、その違い解説も詳しく載せています。

DateAndTimeAPIにおける日付時刻比較について知りたい方は、ぜひタメになるのでご一読ください!


【Java】Java8からの日時計算/日時比較クラスの使い方を解説




新旧API相互変換

【Java】日付時刻の変換方法(新旧 API 相互変換、Data/Calendar の変換)

DateやCalendarは現在、非推奨となっているメソッドもあり、過去に作った日時に関連するプログラムはDateAndTimeAPIに対応させるためのメソッドが存在します。


この記事では、

従来APIとDateAndTimeAPIの相互交換方法

  タイムラインを基にした相互交換-Instantクラス

  LocalDate等とDate・Calendarの相互交換

Date型とCalendar型の相互交換-getTimeメソッド、setTimeメソッド


主に上記の2点について解説しています。

DateAndTimeAPIとDate・Calendarの相互交換は、Instant交換メソッドで、できるできないがあり少しややこしいところです。

その解説も詳しく載せていますので、DateAndTimeAPIと従来APIの相互交換について知りたい方は、ぜひご一読ください!


【Java】日付時刻の変換方法(新旧 API 相互変換、Data/Calendar の変換)




処理時間計測

【Java】処理時間/経過時間計測(ミリ秒)に使える2つのメソッドを解説

処理時間を計測することで、プログラムの実行にかかる時間を調べたり、似たようなメソッドではどちらの処理速度が速いかを比較したりすることで、プログラムの改善や処理の効率化を図ることができます。

この記事では、


ミリ秒単位で処理時間を計測する方法

  ミリ秒単位の処理時間計測-System.currentTimeMillisメソッド

ナノ秒単位で処理時間を計測する方法

  ナノ秒単位の処理時間計測-System.nanoTimeメソッド

メソッドの処理速度を比較する方法


主に上記の3点を中心に解説しています。

他にも日付時刻の解説ではよく目にする「UNIX時間」についても詳しく載せていますので、Javaにおける処理時間計測について知りたい方は、ぜひご一読ください!


【Java】処理時間/経過時間計測(ミリ秒)に使える2つのメソッドを解説


【著者】

伊藤

Javaを研修で3か月学んだ、駆け出しのエンジニアです。
現在は、ベンダー資格を取得するため、勉強を日課にできるよう努力中です。

よく読まれている記事
【Java】JSPでタグライブラリを使う(JSTL)

【Java】JSPでタグライブラリを使う(JSTL)

こんにちは。エンジニアの新田です!ここでは、システムエンジニアとして働いている私が、システム開発手法や開発言語について紹介していこうと思います。今回は、JSPの標準タグライブラリ「JSTL」について紹介します。Javaについて勉強している方、Webアプリケーションを構築したいと思っている方の参考になれば幸いです!関連記事リンク: 【Java】JSPの基本的な構文/【Java】JSPのアクションタグ

【Java】Stringクラス文字列を操作するメソッドの使い方まとめ!実例も紹介!

【Java】Stringクラス文字列を操作するメソッドの使い方まとめ!実例も紹介!

こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者✅にも、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!そもそもStringとは何?『 String 』... Java言語において文字列のデータ型を指します。基本デ

【Java】文字列の置き換え(String#format)!エスケープシーケンスのまとめも!!

【Java】文字列の置き換え(String#format)!エスケープシーケンスのまとめも!!

こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者✅にも、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!Stringクラスformatメソッドの文字列整形【java.utilパッケージ】Formatterクラスfo

【Java】文字列格納後に変更可能!?StringBufferクラスとStringBuilderクラス!

【Java】文字列格納後に変更可能!?StringBufferクラスとStringBuilderクラス!

こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者にも✅、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!文字列を扱う3つのクラス【java.langパッケージ】java.langパッケージの文字列を扱うクラスにはS

【Java】値?変数?型??しっかり解説!『データ型(プリミティブ型と参照型)』

【Java】値?変数?型??しっかり解説!『データ型(プリミティブ型と参照型)』

こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者✅にも、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!プリミティブ型と参照型プログラム開発では型を持った変数を使ってデータのやり取りをしますが、データ型によって仕様