JavaのFormatメソッドで書式を指定するサンプルです。
目次
サンプル | 書式を指定する(format) |
日時の書式設定(DateTimeFormatter) |
書式を指定する(format)
public static String format(String format,Object... args) |
- 書式を指定します。
- 1つ目の引数に書式を指定します。
- 2つ目以降の引数は、書式を指定する文字列や数値です。複数個指定できます。
- Stringクラスのformatメソッドです。
- 以下はJava8 API仕様のformatメソッドのリンクです。
https://docs.oracle.com/javase/jp/8/docs/api/java/lang/String.html#format-java.lang.String-java.lang.Object...- - 以下は、Java8 API仕様の書式の構文です。
https://docs.oracle.com/javase/jp/8/docs/api/java/util/Formatter.html#syntax
formatメソッドで書式を指定するサンプルです。
package test1;
public class Test1 {
public static void main(String[] args) {
// 頭ゼロつける
System.out.println(String.format("%05d", 1000)); //01000
System.out.println(String.format("%06d", 1000)); //001000
// 3桁ごとにカンマ区切り
System.out.println(
String.format("%,d", 1000)); //1,000
System.out.println(
String.format("%,d", 10000)); //10,000
System.out.println(
String.format("%,d", 1000000)); //1,000,000
// 符号を表示
System.out.println(String.format("%+d", 1000)); //+1000
System.out.println(String.format("%+d", -1000)); //-1000
// 左寄せ
System.out.println(String.format("%-4d", 1000)); //1000
// 複数の項目
System.out.println(String.format("%4d %4d", 1000,2000)); //1000 2000
// 書式の中に文字
System.out.println(String.format("%dと%d", 1000,2000)); //1000と2000
// sは文字列
System.out.println(String.format("%s/%s/%s", "2020","07","01")); //2020/07/01
}
}
書式は、最初に必ずパーセント(%)を指定します。
次にカンマまたは0またはマイナス(-)またはプラス(+)を指定します。これは省略可能です。
次に桁数を指定します。省略可能です。
次に型を指定します。dは整数でsは文字列です。
日時の書式設定(DateTimeFormatter)
public static DateTimeFormatter ofPattern(String pattern) |
- 日時を指定した表示形式にします。
- ofPatternメソッドの引数に書式を指定します。
- Java8で導入されました。
- 以下は、Java8 API仕様のDateTimeFormatterクラスのリンクです。
https://docs.oracle.com/javase/jp/8/docs/api/java/time/format/DateTimeFormatter.html
日時の書式設定のサンプルです。
package test1;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class Test1 {
public static void main(String[] args) {
LocalDateTime date1 = LocalDateTime.now();
System.out.println(date1); //2020-07-04T17:34:10.415
DateTimeFormatter dtformat1 =
DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss.SSS E");
String fdate1 = dtformat1.format(date1);
System.out.println(fdate1); // 2020/07/04 17:34:10.415 土
DateTimeFormatter dtformat2 =
DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH時mm分ss秒SSSミリ秒 E曜日");
String fdate2 = dtformat2.format(date1);
System.out.println(fdate2); // 2020年07月04日 17時34分10秒415ミリ秒 土曜日
}
}
8行目は、LocalDateTimeクラスのnowメソッドで現在日時を取得しています。
11,12行目は、DateTimeFormatterクラスのofPatternメソッドで表示形式を指定しています。SSSはミリ秒です。
13行目は、DateTimeFormatterクラスのformatメソッドで設定しています。
表示形式の不要な項目は削除できます。Eは曜日ですが削除すると曜日なしで表示されます。
17行目は、年月日時分秒の表示形式を指定しています。
関連の記事
Java 文字列を結合する(StringBuilder/+/concat/join)