スポンサーリンク

【Java】日付(曜日含む)を取得する方法

JAVA練習問題集

Javaを勉強している際に「日付(曜日含む)」の取得をするコードで長時間悩んだ事があります。

初心者向けに基本的な文法だけで取得できる方法を記載したいと思います。(^_^)/

一度コードを書いてしまえば、必要な時に都度使い回せますので備忘録の意味も含め記事しています。
(環境:Mac・Eclipse_2020-12を使用しています。)

1.Javaで現在の日付を取得する。

まずは、細かい説明は抜きにして私がたどり着いた答えを2つ記載します。

ギダイ
ギダイ

Javaで日付を取得する方法は、様々な方法があると思います。

自分が理解しやすい文法を探すこともプログラミングの勉強ですよね!

・①Dateクラスを使用する

import java.text.SimpleDateFormat;
import java.util.Date;
public class Date_sample {
     public static void main(String[] args) {
     // パターンを指定してSimpleDateFormatのインスタンスを生成
     SimpleDateFormat date = new SimpleDateFormat("yyyy年MM月dd日(E)HH:mm:ss"); 
     // 現在の日時でDate型を取得 
     Date now = new Date(); 
     // dateの戻り値をstrに格納 
     String str = date.format(now); 
     //strを表示 
     System.out.println("現在の時刻:" + str);
     }
}

実行すると【現在の時刻:〇〇〇〇年〇〇月〇〇日(〇)〇〇:〇〇:〇〇】と表示されると思います。

・②Calendarクラスを使用する

import java.util.Calendar;
public class Date_sample2 {
    public static void main(String[] args) {
    // Calendarのインスタンス 
    Calendar cal = Calendar.getInstance();
    //西暦を取得してyearに格納
    int year = cal.get(Calendar.YEAR);
    //月を取得してmonthに格納(monthには+1が必要)
    int month = cal.get(Calendar.MONTH) + 1;
    //日付を取得してdayに格納
    int day = cal.get(Calendar.DAY_OF_MONTH);
    //時刻を取得してhourに格納
    int hour = cal.get(Calendar.HOUR_OF_DAY);
    //分を取得してminuteに格納
    int minute = cal.get(Calendar.MINUTE);
    //曜日を配列に格納(システム上、土曜日から格納しないと日付がずれる
    //0⇒土曜日、1⇒日曜日、、、6⇒金曜日
    String []week= {"土","日","月","火","水","木","金"};
    //DAY_OF_WEEKで取得した数字と上記の配列番号に間違いがなければ正しい曜日を取得できる。
    String weekday=week[cal.get(Calendar.DAY_OF_WEEK)];
    System.out.println("現在の時刻:"+year+"年"+month+"月"
             +day+"日("+weekday+")"+hour+":"+minute);
    }
}

実行すると【現在の時刻:〇〇〇〇年〇〇月〇〇日(〇)〇〇:〇〇】と表示されると思います。

上記2つの詳細は、下記に記載しますのでご確認ください。

解説した内容に誤りがありましたら、ご連絡いただけますと幸いです。m(_ _)m

ギダイ
ギダイ

コメントにてご指摘いただけますと非常に嬉しいです!!

2.Javaの日付に関するクラス

今回使用したJavaの日付型を扱うときに使用する代表的なクラスは、下記の3つです。

クラス内容使用した箇所
java.util.Date日付を扱うクラス①Dateクラスを使用した回答
java.text.SimpleDateFormat日付書式を扱うクラス①Dateクラスを使用した回答
java.util.Calendar日付の操作、計算などを扱うクラス②Calendarクラスを使用した回答

3.プログラムの説明

・Dateクラスを使用したコードの説明

・java.util.Dateについて

単純に日付を取得したいときや簡単に表示したい時などに使うケースが多いと思います。

使用する際は、インポート(※【import java.util.Date;】を記載)しなければなりません。

①Dateクラスを使用した回答にて【 Date now = new Date();】の部分に使用しています。

この時、変数「now」に現在の日時が格納されています。

・java.text.SimpleDateFormatについて

日付書式を簡単に設定できる便利なクラスです。

Calendarクラスと比べると分かりやすいと思います。

Calendarクラスは年月日をそれぞれ抽出していますが、このような手間をかけなくてもimpleDateFormatクラスを使うことで簡単に表示することができます。

こちらも使用する際は、インポート(※【import java.text.SimpleDateFormat;】を記載)しなければなりません。

日付書式の種類を書きに記載しておきます。

書式内容
G紀元
M
w年における週
W月における週
D年における日
月における日
F月における曜日
E曜日

①Dateクラスを使用した回答にて【SimpleDateFormat date = new SimpleDateFormat("yyyy年MM月dd日(E)HH:mm:ss");】と記載している部分で使用しています。

特に(“yyyy年MM月dd日(E)HH:mm:ss”)の部分では、文字の大小を区別していますのでご注意ください。

ギダイ
ギダイ

年月日などの部分を「yyyy/MM/dd (E)」のように自由に変更する事が可能です!

・Calendarクラスを使用したコードの説明

・java.util.Calendarについて

CalendarクラスはDateクラスよりも多くの機能があります。

日付を表示するだけでなく日付の計算もできるクラスです。

ここでの解説は、今回使用した内容のみにしたいと思います。

Calendarクラスでは定数を指定してメソッドを実行したり、実行結果の戻り値が定数となる場合があります。

少し分かり難い説明かと思いますが、cal.get()メソッドにて取得した年(YEAR)や月(MONTH)などの定数を「int year」「int month」に格納しています。

また、定数の月(MONTH)は、1月が「0」となっている為、コードに「+1」を記載して調整しています。

更に、曜日(DAY_OF_WEEK)は、土曜日の「0」から始まり金曜日の「6」となる為、私は配列を利用して曜日を取得する方法をとっています。

※曜日については、日曜日の「1」から始まり土曜日の「7」となる場合もあるようです。バージョンの違いかと思いますが、ご自身のPCで試してください。

参考までに「月」と「曜日」の定数を記載しておきます。

月の定数

定数
JANUARY(1月)0
FEBRUARY(2月)1
MARCH(3月)2
APRIL(4月)3
MAY(5月)4
JUNE(6月)5
JULY(7月)6
AUGUST(8月)7
SEPTEMBER(9月)8
OCTOBER(10月)9
NOVEMBER(11月)10
DECEMBER(12月)11

曜日の定数

定数
SATURDAY(土)0
SUNDAY(日)1
MONDAY(月)2
TUESDAY(火)3
WEDNESDAY(水)4
THURSDAY(木)5
FRIDAY(金)6

4.まとめ:最後に

勉強した事を思い出しながらできる、限り分かりやすく解説してみました。
今回は、下記3つのクラスを使って日付を実装しました。

  • java.util.Date
  • java.text.SimpleDateFormat
  • java.util.Calendar

この3つのクラスは、比較的分かり易いコードではないかと思います。

さらに詳しい内容については、今後も勉強を続けていくつもりですが、下記のサイトでは網羅的に解説されていましたので参考までにリンクを記載しておきます。

【トレノキャンプブログ】

今回は、以上です!

 

 

UPSTART!!(=゚ω゚)ノ

#Java #プログラミング #勉強 #独学 #初心者向け #備忘録

コメント

タイトルとURLをコピーしました