• ベストアンサー

前の月を取得したいです。

現在「2008年7月」です。 一つ前の月を取得したいのですが、どうすればよいのでしょうか? 「2009年1月」であれば「2008年12月」を取得したいです。 教えてください。 よろしくお願いします。

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

  • ベストアンサー
  • ssr-y6
  • ベストアンサー率71% (5/7)
回答No.2

 Calendarクラスのaddメソッドを使えば、年月日のそれぞれの要素を進めたり戻したりできます。 この処理には月の日数の違いやうるう年なども考慮されるので、加減処理が簡単になります。 ただし、月は1月が0と表されることには注意が必要です。 以下がその例です。 import java.util.*; public class month { public static void main(String args[]) { try { String Str = args[0]; Calendar Cal = Calendar.getInstance(); int NenIndex = Str.indexOf("年"); int GatuIndex = Str.indexOf("月"); String YearStr = Str.substring(0, NenIndex); String MonthStr = Str.substring(NenIndex + 1, GatuIndex); int YearNum = Integer.parseInt(YearStr); int MonthNum = Integer.parseInt(MonthStr) - 1; Cal.set(YearNum, MonthNum, 1); Cal.add(Calendar.MONTH, -1); YearNum = Cal.get(Calendar.YEAR); MonthNum = Cal.get(Calendar.MONTH); System.out.println("Next Month : " + Integer.toString(YearNum) + "年" + Integer.toString(MonthNum + 1) + "月"); } catch (Exception e) { System.out.println(e.toString()); }; }; }

その他の回答 (1)

  • aigaion
  • ベストアンサー率47% (287/608)
回答No.1

その現在の月は,どのようなデータ構造で表現されているのでしょうか? 文字列?それとも単に月が数値で表現されている? 独自のデータ構造で表現しているなら,自分で場合分けして処理を書きましょう. 特にデータ構造を決めていないのであれば,Calendarクラスを使えばできますよ. http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/util/Calendar.html http://www.fk.urban.ne.jp/home/kishida/kouza/kishou/11date.html

関連するQ&A

専門家に質問してみよう