java.textパッケージは、テキストを処理するためのクラスとインタフェースを提供するクラスです。この記事では、日付や時刻、数値、通貨などを自然言語に依存しない方法で文字列に変換する方法について紹介します。
java.textパッケージには、次のクラスが含まれる。
| クラス | 説明 |
|---|---|
| Format | 各種フォーマットクラスの基底となる抽象クラス |
| DecimalFormat | 10進数のフォーマット |
| SimpleDateFormat | 日付と時刻のフォーマット |
java.text.Format クラスは、DecimalFormat や SimpleDateFormat など、さまざまなフォーマットクラスの基底となる。
抽象(abstract)クラスなので、インスタンス化できない。
フォーマットクラスを自作するときに、基底クラスとして利用できる。
import java.text.Format;
class MyCustomFormat extends Format
{
// フォーマットの実装
}
java.text.DecimalFormatは、10進数をフォーマットするクラスである。
整数、固定小数値、科学表記法、パーセンテージ及び通貨などのさまざまな種類の数値をサポートしている。
import java.text.DecimalFormat;
public class Example {
public static void main(String[] args) {
DecimalFormat fomatter = new DecimalFormat("\u00A5###,###");
String converted = formatter.format(Double.parseDouble("1000"));
System.out.println(converted);
}
}
Java の java.text.SimpleDateFormat クラスは、日付と時刻のフォーマット(Date オブジェクトから文字列への変換) と 解析(文字列からDateオブジェクトへの変換) の両方に使われる。
ただし、Java 8 以降では、スレッドセーフ であり、より高機能な java.timeパッケージ(DateTimeFormatterなど) の使用が推奨されている。
SimpleDateFormatクラスは、日付と時刻のフォーマット(書式)を扱うクラスである。
| 文字 | 説明 |
|---|---|
| y | 年 |
| M | 月 |
| d | 日 |
| H | 時(0から23) |
| m | 分 |
| s | 秒 |
java.text.SimpleDateFormatクラスのメソッド
| メソッド | 説明 |
|---|---|
| format | フォーマット |
| setTimeZone | タイムゾーンを設定する。 |
import java.text.SimpleDateFormat;
import java.util.Date;
class Sample {
public static void main(String[] args) {
Date date = new Date();
SimpleDateFormt sdf = new SimpleDateFormat("yyyy-MM-dd");
// フォーマット指定なし
System.out.println(date);
// フォーマット指定あり
System.out.println(sdf.format(date));
}
}
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
class Sample {
public static void main(String[] args) {
SimpleDateFormt sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
Date date = sdf.parse("1998-04-29");
System.out.println(date);
} catch (ParseException e) {
System.err.println(e);
}
}
}
タイムゾーンを設定する。
sdf.setTimeZone(TimeZone.getTimeZone("JST"));