【Java入門】printf()メソッドで日付をフォーマットする方法をわかりやすく解説
Javaのprintf()メソッドは、書式を指定して整形済みの文字列を出力するためのメソッドです。第1引数に「フォーマット文字列」を渡し、続けて埋め込みたい値(オブジェクト)を指定します。なお、渡した引数の数がフォーマット文字列内の変換指定子より多い場合、余分なオブジェクトは単純に無視されます。
日付を出力する場合、変換文字の前に必ず接頭辞「t」または「T」を付ける点が特徴です(例:%td、%tB)。以下の表に、日付の出力に使用できる主な変換文字とその説明をまとめました。
日付用の変換文字一覧
| 変換文字 | 説明 |
|---|---|
| 'B' | 対応する引数を月名の完全形(例:November)として出力します。 |
| 'b' | 対応する引数を省略形の月名(例:Nov)として出力します。 |
| 'h' | 対応する引数を省略形の月名として出力します('b'と同義)。 |
| 'A' | 対応する引数を曜日の完全形(例:Tuesday)として出力します。 |
| 'a' | 対応する引数を曜日の省略形(例:Tue)として出力します。 |
| 'C' | 対応する引数を世紀(4桁の年を100で割った値)として出力します。 |
| 'Y' | 対応する引数を西暦4桁の年(例:2020)として出力します。 |
| 'y' | 対応する引数を年の下2桁(例:20)として出力します。 |
| 'j' | 対応する引数を年内の通算日(3桁、例:315)として出力します。 |
| 'm' | 対応する引数を月(2桁、例:11)として出力します。 |
| 'd' | 対応する引数を日にち(必要に応じて0埋めした2桁、例:05)として出力します。 |
| 'e' | 対応する引数を日にち(2桁)として出力します。 |
なお、月名や曜日の表記は実行環境のロケール設定に依存します。日本語環境では日本語の名称で表示されるため注意してください。
例1:日付・月・年を個別に出力する
次の例では、printf()メソッドを使って日付の各要素(日にち・月・年)を個別に表示しています。
import java.util.Date;
public class Example {
public static void main(String args[]) {
// Dateクラスのインスタンスを作成
Date obj = new Date();
System.out.printf("%tD%n", obj);
System.out.printf("日付: %td%n", obj);
System.out.printf("月: %tm%n", obj);
System.out.printf("年(下2桁): %ty%n", obj);
}
}
実行結果
11/10/20 日付: 10 月: 11 年(下2桁): 20
例2:西暦4桁の年と通算日を出力する
次の例では、%tYで西暦4桁の年を、%tjで年初からの通算日を表示しています。
import java.util.Date;
public class Example {
public static void main(String args[]) {
// Dateクラスのインスタンスを作成
Date obj = new Date();
System.out.printf("%tD%n", obj);
System.out.printf("年: %tY%n", obj);
System.out.printf("通算日: %tj%n", obj);
}
}
実行結果
11/10/20 年: 2020 通算日: 315
例3:月名と曜日を出力する
次の例では、%tB/%tbで月名を、%tA/%taで曜日名をそれぞれ出力しています。
import java.util.Date;
public class Example {
public static void main(String args[]) {
// Dateクラスのインスタンスを作成
Date obj = new Date();
System.out.printf("日付: %tD%n", obj);
System.out.printf("月(完全形): %tB%n", obj);
System.out.printf("月(省略形): %tb%n", obj);
System.out.printf("曜日(完全形): %tA%n", obj);
System.out.printf("曜日(省略形): %ta%n", obj);
}
}
実行結果
日付: 11/10/20 月(完全形): November 月(省略形): Nov 曜日(完全形): Tuesday 曜日(省略形): Tue
まとめ
printf()メソッドの日付フォーマットは、「%t + 変換文字」という組み合わせさえ覚えれば直感的に使いこなせます。用途に応じて%td(日)、%tm(月)、%tY(年)、%tB(月名)、%tA(曜日)などを組み合わせれば、SimpleDateFormatのような別クラスを用意しなくても手軽に整形済みの日付文字列を取得できます。
-
Javaで時刻をAM/PM形式にフォーマットする方法をわかりやすく解説
本記事では、Javaを使って時刻をAM/PM形式(12時間表記)にフォーマットする方法を解説します。フォーマット文字列とは、日付・時刻の値を文字列として読み書きする際の形式(フラットファイルへの保存や人間が読みやすい出力など)を定義するためのものです。 それでは、具体的な手順を見ていきましょう。 入力例: 現在の日付: Thu Mar 17 16:04:31 IST 2022 期待される出力: AM/PM形式の現在時刻 : 04.04 pm アルゴリズム ステップ1 - 処理を開始する ステップ2 - 現在の日付と時刻を取得するDateオブジェクト(current_date)を宣言する ステッ
-
Javaのデフォルトメソッドを使ってダイヤモンド問題を解決する方法
継承(Inheritance)とは 継承とは、あるクラスが別のクラスの性質(プロパティやメソッド)を受け継ぐ、2つのクラス間の関係のことです。この関係は extends キーワードを使って次のように定義します。 public class A extends B{ } 性質を受け継ぐ側のクラスは「サブクラス(子クラス)」、受け継がれる側のクラスは「スーパークラス(親クラス)」と呼ばれます。 継承が行われると、スーパークラスのメンバーのコピーがサブクラスのオブジェクト内に作成されます。そのため、サブクラスのオブジェクトを使えば、親クラスと子クラスの両方のメンバーにアクセスすることが可能です。 多重