[Java] 日付の計算方法(DateFormat、Date、Calendar)
公開日:
:
Java, 基本 Calendar, Date, DateFormat, Java, SimpleDateFormat, 日付, 演算, 計算
こんにちは、kei0310です。
Javaで日付を計算する方法について解説します。
まず、任意の日付をつくるためには、DateFormatを利用します。
SimpleDateFormatクラスはとても重いクラスなので、やたらめったらnewするとパフォーマンスが落ちますが、この話をすると記事の範疇を超えるので割愛します。
※特にWebアプリのようなマルチスレッド環境でSimpleDateFormatを取り扱うときは注意が必要です。
DateFormatの取り扱い自体は簡単で、以下のように記述します。
1234 // DateFormat作成
DateFormat df =
new
SimpleDateFormat(
"yyyy-MM-dd"
);
// 日付文字列をDate型に変換
Date dt = df.parse(
"2014-08-01"
);
1 2 3 4 | // DateFormat作成 DateFormat df = new SimpleDateFormat( "yyyy-MM-dd" ); // 日付文字列をDate型に変換 Date dt = df.parse( "2014-08-01" ); |
あとは、Calendarクラスを介して日付の計算を行います。
以下は、そのままコピペして使えるサンプルになります。
●日付の計算サンプル
1234567891011121314151617181920212223242526272829303132333435363738394041 package
test.date;
import
java.text.DateFormat;
import
java.text.ParseException;
import
java.text.SimpleDateFormat;
import
java.util.Calendar;
import
java.util.Date;
public
class
TestDateCalc {
public
static
void
main(String[] args)
throws
ParseException{
// DateFormat
DateFormat df =
new
SimpleDateFormat(
"yyyy-MM-dd"
);
// 2014/08/01でDateオブジェクト作成
Date dt = df.parse(
"2014-08-01"
);
// カレンダークラスのインスタンスを取得
Calendar cal = Calendar.getInstance();
// 現在時刻を設定
cal.setTime(dt);
// 150日を加算
cal.add(Calendar.DATE,
150
);
// 結果を表示
System.out.println(df.format(cal.getTime()));
// 2カ月を加算
cal.add(Calendar.MONTH,
2
);
// 結果を表示
System.out.println(df.format(cal.getTime()));
// 1年を減算
cal.add(Calendar.YEAR, -
1
);
// 結果を表示
System.out.println(df.format(cal.getTime()));
}
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | package test.date; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class TestDateCalc { public static void main(String[] args) throws ParseException{ // DateFormat DateFormat df = new SimpleDateFormat( "yyyy-MM-dd" ); // 2014/08/01でDateオブジェクト作成 Date dt = df.parse( "2014-08-01" ); // カレンダークラスのインスタンスを取得 Calendar cal = Calendar.getInstance(); // 現在時刻を設定 cal.setTime(dt); // 150日を加算 cal.add(Calendar.DATE, 150 ); // 結果を表示 System.out.println(df.format(cal.getTime())); // 2カ月を加算 cal.add(Calendar.MONTH, 2 ); // 結果を表示 System.out.println(df.format(cal.getTime())); // 1年を減算 cal.add(Calendar.YEAR, - 1 ); // 結果を表示 System.out.println(df.format(cal.getTime())); } } |
●結果
123 2014
-
12
-
29
2015
-
02
-
28
2014
-
02
-
28
1 2 3 | 2014 - 12 - 29 2015 - 02 - 28 2014 - 02 - 28 |
スポンサードリンク
関連記事
-
-
[Java][Servlet][JSP] ServletからJSPへの転送
こんにちは。 今回は、「Servletでリクエストを受けて、JSPで表示する。」方法を解説しま
-
-
[Java] テキストファイルの読み込み方法
こんにちは、今回はテキストファイルをJavaで読む方法を紹介します。 標準で提供されているクラ
-
-
[Java] Apache POIでExcel操作!
Apache POIをまずは使ってみようという方(自分も含め)のメモ 導入 Maven htt
-
-
[Java][基本] ループ処理(for文)
Javaのループ処理の基本である、for文を解説します。 ●文法 for( [①初期化];
-
-
[Java][Framework] Spring BootのJPAでDB接続した際のEntityキャッシュのクリア方法
Spring BootのJPAでDBアクセスした際に、処理を一定量こなすと、Heapが足りなくな
-
-
[Java] Javaのインストール(プログラム開発・入門用)
Javaのコードを書きたい!! という目的のためのJavaのインストール方法と、コマンドラインでの
-
-
[Java] StringBuilderの使い方(Stringを連結するクラス)
今回は、可変長文字列クラスのStringBuilderを紹介します。 固定長文字列クラスのSt
-
-
[Java][Jersey] JerseyでRESTfulなJAX-RS Webサービス作成
こんにちは、keiです。 今回はRESTfulなWeb Serviceの作成を行っていきます。
-
-
[Java] 文字列の分割(split)
こんにちは。 今回は、文字列の分割について解説します。 昔はStringTokenize
-
-
[Java][Servlet] EclipseでのJavaServlet作成
こんにちは、今回はEclipseを使用してJavaServletを作成します。 Eclipse