Javaに関する様々な情報をご紹介します。

3SimpleDateFormatクラス

Javaに関する様々な情報をご紹介します。

SimpleDateFormatクラス

このページでは日付・時刻のフォーマット表示に使用するSimpleDateFormatクラスについて解説します。ロケール、フォーマットパターンの指定により、様々なフォーマットで日付・時刻を表示できるようになります。

コンストラクタ

SimpleDateFormatクラスのコンストラクタについて解説します。

コンストラクタ 説明
SimpledateFormat() デフォルトのロケール、パターン、日付フォーマット記号を持つ、オブジェクトを生成します。
SimpledateFormat(String) 指定されたパターン、デフォルトのロケール、日付フォーマット記号を持つ、オブジェクトを生成します。
SimpledateFormat(String, DateFormatSymbols) 指定されたパターン、日付フォーマット記号を持つ、オブジェクトを生成します。
SimpledateFormat(String, Locale) 指定されたパターン、ロケール、デフォルトの日付フォーマット記号を持つ、オブジェクトを生成します。

例1

//フォーマットパターンを指定して、SimpleDateFormatオブジェクトsdf1を生成します。
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy/MM/dd");

//フォーマットパターン、ロケールを指定して、SimpleDateFormatオブジェクトsdf1を生成します。
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy/MM/dd", Locale.US);

パターン

SimpleDateFormatクラスで用意されているパターン文字について解説します。

文字 説明
G 紀元 AD
y 1996, 96
M July, Jul, 07
w 年における週 27
W 月における週 2
D 年における日 189
d 月における日 10
F 月における曜日 2
E 曜日 Tuesday, Tue
a 午前/午後 PM
H 一日における時(0~23) 0
k 一日における時(1~24) 24
K 午前/午後の時(0~11) 0
h 午前/午後の時(1~12) 12
m 30
s 55
S ミリ秒 978
z タイムゾーン Pacific Standard Time, PST, GMT-08:00
Z タイムゾーン -0800
  • パターン内に任意の文字列を入れたい場合は、任意の文字列を' 'で囲みます。' 'で囲まれた文字列はパターン文字と認識されません。
  • パターン文字の連続する数によりフォーマットが決まります。yyの場合は年を2桁で表します。yyyyの場合は年を4桁で表します。
  • 年を2桁で表す場合、オブジェクトが生成された年の前80年以内、後20年以内の範囲の年が認識されます。2000年にオブジェクトを生成した場合、21年は1921年と解釈され、15年は2015年と解釈されます。
  • 月を表すパターン文字において、パターン文字の連続が3文字以上(MMM)の場合は、月をテキスト(July, Jul)で表示します。2文字以内(MM)の場合は、数字(07)で表します。

APIドキュメントに記載されている、パターン例を以下に記載します。

パターン 表示例
"yyyy.MM.dd G 'at' HH:mm:ss z" 2001.07.04 AD at 12:08:56 PDT
"EEE, MMM d, ''yy" Wed, Jul 4, '01
"h:mm a" 12:08 PM
"hh 'o''clock' a, zzzz" 12 o'clock PM, Pacific Daylight Time
"K:mm a, z" 0:08 PM, PDT
"yyyyy.MMMMM.dd GGG hh:mm aaa" 02001.July.04 AD 12:08 PM
"EEE, d MMM yyyy HH:mm:ss Z" Wed, 4 Jul 2001 12:08:56 -0700
"yyMMddHHmmssZ" 010704120856-0700

メソッド

SimpleDateFormatクラスで用意されている主なメソッドについて解説します。

戻り型 メソッド 説明
void applyPattern(String) 引数に指定されたパターンをオブジェクトに適用します。
String format(Date) 引数に指定されたDateをSimpleDateFormatオブジェクトのパターンに従い、フォーマットします。
Date parse(String) 引数に指定された文字列を解釈して、Dateオブジェクトを返します。

例2 SimpleDateFormatクラスを使用して、Dateオブジェクトをフォーマットして表示するプログラムを作成します。

import java.util.*;
import java.text.*;

class ExDate3 {
  public static void main(String[] args) {
    Date date1 = new Date();  //(1)Dateオブジェクトを生成

    //(2)SimpleDateFormatオブジェクトを生成
    SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy'年'MM'月'dd'日'");
    System.out.println(sdf1.format(date1));  //(3)Dateオブジェクトを表示

    sdf1.applyPattern("yyyy/MM/dd");  //(4)フォーマットパターンを変更
    System.out.println(sdf1.format(date1));  //(5)Dateオブジェクトを表示
  }
}

解説2

  1. (1)現在の日時を保持したDateオブジェクトdate1を生成します。
  2. (2)フォーマットパターンを指定して、SimpleDateFormatオブジェクトsdf1を生成します。
  3. (3)formatメソッドを使用し、指定したフォーマットパターンで現在の日時を表示します。
  4. (4)applyPatternメソッドを使用し、フォーマットパターンを変更します。
  5. (5)formatメソッドを使用し、変更したフォーマットパターンで現在の日時を表示します。

実行結果2

C:\source>javac ExDate3.java 

C:\source>java ExDate3 
2004年05月02日 
2004/05/02 

C:\source>

3SimpleDateFormatクラス