JAVAで時間の計算方法

このQ&Aのポイント
  • JAVAで文字列で表現された時刻から30分前を取得するプログラムを考えています。Calendarクラスのaddメソッドを使用して実現できますが、文字列をCalendarオブジェクトに変換する方法が不明です。
  • 時間を文字列で表現した変数から30分前の時刻を取得するJAVAのプログラムを作成したいです。Calendarクラスのaddメソッドを使うことで実現できますが、文字列をCalendarオブジェクトに変換する方法がわかりません。
  • JAVAで、文字列で表現された時刻から30分前の時刻を取得する方法について教えてください。Calendarクラスのaddメソッドを使って実現できると思いますが、文字列をCalendarオブジェクトに変換する方法がわかりません。
回答を見る
  • ベストアンサー

JAVAで時間の計算方法

お世話になります。 JAVAにおいて、文字列で"yyyyMMddHHmm"で表現された変数から30分前を文字列で取得するプログラムを考えています。 例えば、"201606011200"から"201606011130"を取得するプログラムです。 Calendarでaddをつかえば30分前を取得できる思うんですが、CalendarでyyyyMMddHHmmをどうすれば入力できるのかよくわかりません。 (Simpledateformatを使うと思うんですが、参考になるサイトが見つけられなかったです。) 上記を実現するプログラムをご教授いただけますでしょうか。 どうぞよろしくお願い致します。

  • Java
  • 回答数3
  • ありがとう数0

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

  • ベストアンサー
  • HNEX
  • ベストアンサー率62% (43/69)
回答No.3

こんな感じでどうでしょうか 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()); }

その他の回答 (2)

回答No.2

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

  • maiko0333
  • ベストアンサー率19% (840/4403)
回答No.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

関連するQ&A

  • Javaを使って、string型の年月日に日を加算するにはどの様にした

    Javaを使って、string型の年月日に日を加算するにはどの様にしたら一番簡単でしょうか。 例えば、20100831 という文字列に+3日を加えたら20100903というstringの値が返るようにしたいのです。 string型からSimpledateFormatで日付にして、calendarクラスで加算して、戻して・・・というなんか面倒くさい方法しか思いつきません。 皆様の知恵をお貸しください。

    • ベストアンサー
    • Java
  • JAVAのアプレットの文の改行方法。

    JAVAのアプレットにてstringにて変数を宣言し、そこに文字列を代入します。 その後initメソッド内でその変数を呼び出したら、代入した文字列が出ます。 文字列を改行を行いたいのですが、文字列に\nをはさんでも改行されません。 改行するにはどのようにしたら良いでしょうか。 具体的にはこのような感じです。 [javaファイル] import java.applet.*; import java.awt.*; public class mozi extends Applet{ private Label AA; private String moziretsu = "こんにちは\nこんばんは"; public void init(){ add(AA = new Label(moziretsu)); } } [htmlファイル] <html> <head><title>mozi</title></head> <body> <applet code="mozi" codebase="." width="700" height="240"> </applet> </body> </html>

    • ベストアンサー
    • Java
  • javaのResultSetについて

    javaのResultSetについてですが、getStringでSQL名を選択して取得するのですが、変数で指定した場合は、文字列と判断され取得できないのでしょうか? 例えばSQLの列名の「test」を取得したい場合は、「rs.getString(test)」と記述しますが、 以下のように変数に置き換えて、取得しようすると、 String test2 = "test"; rs.getString(test2)というようにすると、カラムがありませんとエラーが返ってきます。 変数に置き換えて実行したいのですが、何か良い方法がないかご教授いただけますでしょうか。 宜しくお願い致します。

    • ベストアンサー
    • Java
  • java String型から日付型へ変換

    こんにちは 現在javaのPGで日付チェックを行いたくプログラムを組んでいるのですが、色々なサイトを見ながら以下のようなものを書きました。 しかし、動かすと必ず例外にcatchされていまいます。 なぜ例外処理をされてしまうのか、原因がわかりません。 何がいけないのでしょうか?? ご教授お願いいたします。 import java.util.Date; import java.text.DateFormat; import java.text.SimpleDateFormat; //strbeginDate, strcloseDateはフォームよりString型で受け取ります。 String strbeginDate, strcloseDate; SimpleDateFormat DatebeginDateformat = new SimpleDateFormat("YYYYMMDD"); SimpleDateFormat DatecloseDateformat = new SimpleDateFormat("YYYYMMDD"); Date datebeginDate = DatebeginDateformat.parse( strbeginDate ); Date datecloseDate = DatecloseDateformat.parse( strcloseDate ); intflag = datebeginDate.compareTo(datecloseDate);

    • ベストアンサー
    • Java
  • Javaでの書式変換

    Javaでの書式変換について質問です。 JavaでTime型として値が"13:00:00"であるようなデータを保持している場合に、"13時0分"という文字列に変換された値を取得しようとしています。 要求としては、 1)"13:00:00"のようなTime型のデータを"13時0分"という文字列にしたい。 2)1時間未満の場合は"○分"という文字列にしたい。 Javaで独自に処理を書くしかないか迷っている状態です。 もし良いライブラリがあれば教えていただけないでしょうか?

    • ベストアンサー
    • Java
  • javaスクリプトについて(DoJa5.1)

    初心者です。 根本的な疑問なのですが javaで組んだプログラムはどこを回っているのでしょう? TextBoxを設置してBoxを選択、数値を入力、Box内には入力された数値が表示されています。 直下でgetText使用し入力した文字を汎用変数に取得 それを表示させてみますが””のまま これはいったい? 元がBASICレベルですのでさっぱりわからないのです。 質問そのものがわからないかもしれませんが、解読できた方、よろしくお願いします。

    • ベストアンサー
    • Java
  • Java 日付の加算がうまくいきません。。どなたか助けてください・・・

    初歩的質問で申し訳ないのですが、ご存知の方ご教授ください。日付の加算についてどうしてもわからない箇所があります。 Calendar cal= Calendar.getInstance((TimeZone.getTimeZone("GMT"))); int year = 2007; int month = 1; int day = 1; cal.set(year,month,day); cal.add(Calendar.DAY_OF_MONTH,100); SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd"); String tempDate=sdf.format(date); tempDate=2007/05/12 私が求めている結果は tempDate=2007/4/11 なのですが、tempDate=2007/05/12になってしまいます。 お願いします。 環境:WinXp pro Eclipse 3.1 JDK 1.4.2 2007/4/11は Oracle8i の実行結果です。 select to_date('2007-01-01') +100 from dual

    • ベストアンサー
    • Java
  • 以下のJAVAプログラムでご質問です。

    import java.util.*; import java.io.*; import java.text.*; public class JTest9 { public static void main(String[] args) throws IOException { System.out.println("基準となる年月日を入力して下さい。"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str1 = br.readLine(); String str2 = br.readLine(); String str3 = br.readLine(); int year = Integer.parseInt(str1); int month = Integer.parseInt(str2); int day = Integer.parseInt(str3); String targetDateText = year + "/" + month + "/" + day; int addDate = 10; SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd"); Date targetDate = sdf.parse(targetDateText); Calendar cal = Calendar.getInstance(); cal.setTime(targetDate); cal.add(Calendar.DATE,addDate); System.out.println(sdf.format(cal.getTime())); } } 上記は、コンソールから、年、月、日 を入力し、その入力した日付から10日後の日付を 出力しようとしているプログラムです。 しかし、17行目のsdf.parse(targetDateText);において、コンソール上に下記エラーが出ます。 Exception in thread "main" java.lang.Error: Unresolved compilation problem: 処理されない例外の型 ParseException このエラーを解決したいのですが、どのように修正すればよいのでしょうか。 ご助言の程、よろしくお願い致します。

    • ベストアンサー
    • Java
  • java 問題

    public static void main(String[] args) { 1 文字列型変数 word をせんげんする String word = "abc"; 2  // 文字列型の変数が入る配列 words を宣言する   // 同時に、word から substring で取り出した文字をセットする Java初心者です。 2番が分かりません。どなたか解説していただけると助かります。

    • ベストアンサー
    • Java
  • 変数文字の中に変数を入れたい

    初心者です。宜しく御願いします。 java sprictで文字列の中に変数名を入れたいのですが、 可能でしょうか? 例えば、PHPとかですと、変数の前に「$」があるので、 $hensu1="5"; ${hensu.$hensu}="dekirukana";←このような表現がしたいのです。 echo $hensu5; のような(上のプログラムが動くかどうかは別として)表現が可能かどうかが知りたいのです。 for文などで、一度に多くの変数に値を入れたいのですが、 どうあがいてもできません。わかりません。 どなたか救いの手をお願いします。