java.textパッケージ

java.textパッケージは、テキストを処理するためのクラスとインタフェースを提供するクラスです。この記事では、日付や時刻、数値、通貨などを自然言語に依存しない方法で文字列に変換する方法について紹介します。

目次

  1. クラス
    1. Format
    2. DecimalFormat
    3. SimpleDateFormat

クラス

java.textパッケージには、次のクラスが含まれる。

java.textパッケージのクラス一覧
クラス 説明
Format 各種フォーマットクラスの基底となる抽象クラス
DecimalFormat 10進数のフォーマット
SimpleDateFormat 日付と時刻のフォーマット

java.text.Format

java.text.Format クラスは、DecimalFormat や SimpleDateFormat など、さまざまなフォーマットクラスの基底となる。

抽象(abstract)クラスなので、インスタンス化できない。

フォーマットクラスを自作するときに、基底クラスとして利用できる。

import java.text.Format;

class MyCustomFormat extends Format
{
  // フォーマットの実装
}

java.text.DecimalFormat

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);
  }
}

SimpleDateFormat

Javajava.text.SimpleDateFormat クラスは、日付と時刻のフォーマット(Date オブジェクトから文字列への変換) と 解析(文字列からDateオブジェクトへの変換) の両方に使われる。 ただし、Java 8 以降では、スレッドセーフ であり、より高機能な java.timeパッケージ(DateTimeFormatterなど) の使用が推奨されている。

SimpleDateFormatクラスは、日付と時刻のフォーマット(書式)を扱うクラスである。

SimpleDateFormatの書式
文字 説明
y
M
d
H 時(0から23)
m
s

java.text.SimpleDateFormatクラスのメソッド

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);
    }
  }
}

setTimeZoneメソッド

タイムゾーンを設定する。

sdf.setTimeZone(TimeZone.getTimeZone("JST"));