<目次>
(1) Javaで日付を整形する方法について
(1-1) 構文
(1-2) サンプルプログラム
(1) Javaで日付を整形する方法について
日付を扱っていて、例えば「Thu Dec 10 23:07:25 JST 2020」のような日付を「2020/12/10 23:07:25」という形式に変換したい、といったケースはないでしょうか?本記事ではその記述についてご紹介します。
(1-1) 構文
Javaで日付を扱うには「SimpleDateFormat」クラスが利用できます。
(構文)
SimpleDateFormat sdf = new SimpleDateFormat("[整形したい日付フォーマット]"); String format_date1 = sdf1.format([整形対象のDate型インスタンス]);
パターン | 代表例 | 意味 |
y | yyyy | 年 |
M | MM | 月 |
d | dd | 日 |
h | hh | 時間(1~12で表示) |
H | HH | 時間(0~23で表示) |
m | mm | 分 |
s | ss | 秒 |
s | SSS | ミリ秒 |
E | E | 曜日 |
D | D | 1年の内のXXX日目(XXX=1~366) |
a | a | am/pm |
次に、SimpleDateFormatクラスのformatメソッドを使って、先ほど指定したフォーマットに変換する対象のDate型インスタンスを与えて整形を行います。結果はString型で返却されます。
(1-2) サンプルプログラム
以下のサンプルプログラムでは同じDate型の値(orig_date)を4種類のパターンに整形して結果を出力するプログラムです。最低限のルールさえ守れば、出力の型の自由度が非常に高い事が分かります。
(サンプルプログラム)
import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class IT0987_DateFormat { public static void main(String args[]) { Calendar cal = Calendar.getInstance(); cal.set(2020,Calendar.DECEMBER,10,23,07,25); Date orig_date = cal.getTime(); System.out.println("# フォーマット前 :"+orig_date); //# yyyy/MM/dd SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy/MM/dd z"); String format_date1 = sdf1.format(orig_date); System.out.println("# フォーマット後①:"+format_date1); //# yyyy-MM-dd a SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd a"); String format_date2 = sdf2.format(orig_date); System.out.println("# フォーマット後②:"+format_date2); //# yyyy-MM-dd HH:mm:ssZ SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ssZ"); String format_date3 = sdf3.format(orig_date); System.out.println("# フォーマット後③:"+format_date3); //# yyyy-MM-dd E SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd E"); String format_date4 = sdf4.format(orig_date); System.out.println("# フォーマット後④:"+format_date4); } }
(図121)