こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

JAVAで時間の計算方法

お世話になります。

JAVAにおいて、文字列で"yyyyMMddHHmm"で表現された変数から30分前を文字列で取得するプログラムを考えています。

例えば、"201606011200"から"201606011130"を取得するプログラムです。

Calendarでaddをつかえば30分前を取得できる思うんですが、CalendarでyyyyMMddHHmmをどうすれば入力できるのかよくわかりません。
(Simpledateformatを使うと思うんですが、参考になるサイトが見つけられなかったです。)

上記を実現するプログラムをご教授いただけますでしょうか。

どうぞよろしくお願い致します。

投稿日時 - 2016-06-15 21:50:00

QNo.9188150

すぐに回答ほしいです

質問者が選んだベストアンサー

こんな感じでどうでしょうか
SimpleDateFormaとCalendarを使用した計算方式です

public static void main(String... args) throws Exception {
System.out.println(calc30minitusAgoTime("201606011200"));
}

public static String calc30minitusAgoTime(String source) throws Exception {
SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmm");
Calendar calendar = new GregorianCalendar();
calendar.setTime(format.parse(source));
calendar.add(Calendar.MINUTE, -30);
return format.format(calendar.getTime());
}

投稿日時 - 2016-06-16 14:43:36

ANo.3

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

パースしてから計算でOKですよ。
dataformatならparseメソッドかな

投稿日時 - 2016-06-16 09:27:19

ANo.1

set
public final void set(int year, int month, int date,
int hourOfDay, int minute)

カレンダフィールド YEAR、MONTH、DAY_OF_MONTH、HOUR_OF_DAY、
およびMINUTE の値を設定します。
他のフィールドの以前の値は保持されます。保持されないようにする場合は、
最初に clear() を呼び出します。

パラメータ:
year - YEAR カレンダフィールドの設定に使用する値
month - MONTH カレンダフィールドの設定に使用する値。
Month 値は 0 から始まる (1 月 は 0 になる)
date - DAY_OF_MONTH カレンダフィールドの設定に使用する値
hourOfDay - HOUR_OF_DAY カレンダフィールドの設定に使用する値
minute - MINUTE カレンダフィールドの設定に使用する値

Calendar calendar = Calendar.getInstance();
calendar.set(2006, 4, 14, 9, 24);

http://www.javadrive.jp/start/calendar/index3.html

投稿日時 - 2016-06-15 21:55:53

あなたにオススメの質問