• ベストアンサー

2つの年月の前後関係の判定(未解決です・・)

先程、 http://oshiete1.goo.ne.jp/kotaeru.php3?q=613656 で同じ質問をしたのですが、質問の仕方が悪かった為、 また、まだ未解決な為、再度同じ質問をさせて頂きます。 せっかく回答頂いたのに本当にすみません・・。 2つのDateオブジェクトの 『 年月 』 の前後関係を調べる方法を 知りたいのですが・・↓ 例えば、 1.2003/5/7 (java.sql.Dateオブジェクト) 2.2003/5/20 (java.sql.Dateオブジェクト) 1と2を比較し、「1は2よりも前の月かどうか」を調べたいです。 ※「1は2よりも前の日にちかどうか」ではないです 上記の場合は、2つが同じ月である事を取得したいです。 (※「1は、2よりも前の“日付”である」ことを取得したいのではありません。) 更に、以下のように年をまたがる場合も正しく取得できるように する必要があります↓ 1.2002/12/1 (java.sql.Dateオブジェクト) 2.2003/1/1 (java.sql.Dateオブジェクト) ※上記のような場合は、 『 1は2の前月 』 という結果を取得したいです。 年の繰り下がりや繰り上がりなども考慮して 整合性のとれた結果を取得できるような方法を教えて下さい・・。 ややこしいことを質問してすみません・・。 先程の質問と回答を参照して頂けると、質問の内容を 分かって頂けるかもしれません。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=613656 むずかしいことなのかも知れませんが、もし分かるという方 いらっしゃいましたら、教えて頂けないでしょうか・・よろしくお願いします。

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

  • ベストアンサー
  • takaP-
  • ベストアンサー率79% (83/105)
回答No.2

>ややこしいことを質問してすみません・・。 public int compare(Calendar c1,Calendar c2){ int y=c1.get(Calendar.YEAR)-c2.get(Calendar.YEAR); int m=c1.get(Calendar.MONTH)-c2.get(Calendar.MONTH); return y*12+m; } ややこしくない処が問題だったり(笑 >『 1は2の前月 』 という結果を取得したいです。 と、答えが出るという事は、頭ではロジックを組めているわけですよね。。。それを、そのままコードで表現すれば良いだけなんですがね。 「年の数値の取り方が解からない」「月の数値のとり方が解からない」というのなら、ココで質問する以前に入門書と睨めっこすべしです(絶対に載っているはずです) 無経験で現場に突っ込まれているとかいう現状だったりでもないのであれば、もう少し基礎力付けた後で独自のコーディングをやり始めた方が良いと思いますよ。 私も最初は「ワケがわからなくても取り敢えず作る、その内解かる様になるさ!」って方針でやっていたんですけど、結局、わからないものは解からないままで時間を無駄にした苦い経験があります。 入門書ってのは丸暗記する(何ページの何処に何が書いてあるかが分かる)位に何度も繰返し読み返して漸く力が付く物だと思います。では、頑張って下さい。

kawaen
質問者

お礼

すみません!間違えて補足欄に書いてしまいました・・。 ご回答ありがとうございました! 教えて頂いたコードを、早速明日職場で実装してみようと思います!

kawaen
質問者

補足

>無経験で現場に突っ込まれているとかいう現状だったりでもないのであれば 私事で恐縮なのですがそれに近い状態です・・。 本来なら、基礎知識などをみっちり勉強してから でないといけないのかもしれませんが、 私の今の状態は、全くの畑違いの業務から 2週間でJavaの基礎知識を詰め込まされたのみです・・。 実装するにあたって調べないと分からない事が 途方もなく多くて、もうこのままではだめになるかもしれません・・。 とりあえず、今は最大限がんばるしかないと思っているのですが 何せ、時間が全く足りないのです・・。 すみません・・余計なことを愚痴ってしまいました・。 お許しください・・・・。 質問した内容については、いつか時間が出来たら調べようと思うのですが、 もしかしたら、違う方法を考えるかもしれません。 アドバイス頂き、ありがとうございました。

その他の回答 (1)

  • yuji
  • ベストアンサー率37% (64/169)
回答No.1

Javaうんぬんの前に論理的な思考力が足りないように思います。 年と月を比較する方法はいくらでもあります。 例:月数に変換してから比較する。  年 x 12 + 月 の値を計算してそれを比較する。

kawaen
質問者

お礼

ご回答ありがとうございました。 >Javaうんぬんの前に論理的な思考力が足りないように思います。 まさにおっしゃる通りだと思います・・論理的に思考できないせいで、自力で解決できないことが多々あります・・。私はプログラマーに向いてないのかもしれません・・。

関連するQ&A