• ベストアンサー
  • すぐに回答を!

javaでの日付の大小比較について

javaでの日付の大小比較について分からない事があります。 (1)例:2002/04/01と本日の日付(例:2002/06/03)の大小関係を調べるにはどうす ればよろしいのでしょうか? 何か分かる事がありましたら、ご教授お願い致します。

共感・応援の気持ちを伝えよう!

  • Java
  • 回答数4
  • ありがとう数5

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

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

>例えば、今日の日付(2002/06/05)を引数にすると、 >afterメソッドではtrueを返すのに対し、beforeメソッドだとfalseを返すのですが、これはメソッドの性能上の問題なのでしょうか? それは時刻も含めて比較しているためでしょう。 Date now = new Date(); で作られたnowは現在の時刻のDateオブジェクトです。 DateFormat.parse("2002/06/05"); のように parse で得たDateオブジェクトは時刻は 切り捨てられています。(つまり0時0分0秒の時点のデータです。) 時刻も得たいのであれば、 SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); のように時分秒まで parse するようにすればいいだけです。 >あとAPIドキュメントなのですが、メソッド等の使用例がないので初めてメソッドを使用する際に使いにくくないでしょうか? APIドキュメントだけではわかりづらいというのでしたら 参考書を買った方がいいです。 私は「Java プログラミング BLACK BOOK」 インプレス社発行の本をいつも手元に置いています。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

回答どうもありがとうございます。 非常に分かりやすいサンプルのコードだけでなく、 参考の書籍も合わせてご教授頂き、大変感謝しております。 これからも勉強に励んで、yujiさんのように質問に答える側になるよう 頑張りたいと思います。 今回は本当にどうもありがとうございました。

その他の回答 (3)

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

特定の日付のオブジェクトを作りたかったら 下記のようにSimpleDateFormatを利用します。 java.util.* パッケージと java.text.* パッケージを import するのをお忘れなく。 不明点は、まず自分でAPIを調べてから、 それでもわからなかったら聞いてください。 try {  SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");  Date now = new Date();  if (now.after(dateFormat.parse("2002/05/31"))) {   System.out.println("今日は2002/05/31よりも後の日です。");  }  if (now.before(dateFormat.parse("2002/06/10"))) {   System.out.println("今日は2002/06/10よりも前の日です。");  } } catch (Exception ex) {  ex.printStackTrace(); }

共感・感謝の気持ちを伝えよう!

質問者からのお礼

回答ありがとうございました。 なんとか問題解決しました。 1つ気になったのが、 回答してくださった中のafterメソッドとbeforeメソッドについて、 例えば、今日の日付(2002/06/05)を引数にすると、 afterメソッドではtrueを返すのに対し、beforeメソッドだとfalseを返すのですが、これはメソッドの性能上の問題なのでしょうか? あとAPIドキュメントなのですが、メソッド等の使用例がないので初めてメソッドを使用する際に使いにくくないでしょうか?それとも自分が知っているAPIドキュメント(http://java.sun.com/j2se/1.3/ja/docs/ja/api/)とyujiさんが言われているAPIドキュメントは違うのでしょうか?

  • 回答No.2
  • -soh-
  • ベストアンサー率27% (55/201)

コンパイルしてないけど多分 Date now = new Date("2002/04/01"); System.out.println(now.after(new Date("2002/06/01"))); じゃないかな? Stringによるコンストラクタは推奨されてないけど。(^^; Date型が何か? って話には、そうですねぇ~ String型ってじゃぁなんだ? って考えてください。 なんでしょ? String型って? Strng型っていうのは文字列をあらわすクラス(型)ですよね? さて、それじゃぁDate型ってのは何か? 名前の通り日付をあらわすクラス(型)です。 とりあえず、わからないメソッドについては ちゃんとAPIリファレンスを引いてみてくださいな ほいでは(^-^/~~

参考URL:
http://java.sun.com/j2se/1.3/ja/docs/ja/api/java/util/Date.html#after(java.util.Date)

共感・感謝の気持ちを伝えよう!

質問者からのお礼

回答ありがとうございました。 なんとか問題解決しました。 今回はどうもありがとうございました。 また何かありましたら宜しくお願い致します。

  • 回答No.1
  • -soh-
  • ベストアンサー率27% (55/201)

java.util.Dateの after() before() メソッドではいけませんか?

共感・感謝の気持ちを伝えよう!

質問者からの補足

早い回答ありがとうございます。 このafter()メソッドなのですが、 --------------------------------------- Date now = new Date(); System.out.println(now.after(2002/06/01)); --------------------------------------- このように記述すると 「java.util.Date の after(java.util.Date) は (int) に適用できません」 というエラーが出てしまいました。 after()メソッドの引数はDate型と書いてあったのですが、「2002/06/01」というのDate型にはならないのでしょうか? もし、よろしければDate型とは何なのかということと、after()メソッドの使用例をご教授してもらえないでしょうか? 図々しくて大変申し訳ございません。

関連するQ&A

  • JUnit4での日付の大小比較について

    JUnit4での日付の大小比較について /* 環境 */ JDK 6.0 Update17 eclipse 3.5 JUnit4.7 初めてJUnit4を使ってテストコードを書いてみようと思ったのですが、 日付の大小比較についての記述がわかりません。 例えば、次のコードでyourBirthdayがmyBirthdayよりも後の日付である(大きい)ことを確認するには どのように書いたらよいのでしょうか? import static org.junit.Assert.*; import static org.hamcrest.CoreMatchers.*; ... ... Date myBirthday = ... Date yourBirthday = ... assertThat(myBirthday, is(notNullValue()); assertThat(yourBirthday, is(notNullValue()); // yourBirthday > myBirthday であることを確認したい assertThat(yourBirthday, /* ??? */); ご教示よろしくお願いします。

    • ベストアンサー
    • Java
  • Javaの文字列の大小比較についてです。

    Javaでは、文字列の大小比較をする時、StringのcompareToを使用しまが… compareToの中の処理は一旦char型に直して、それを比較しているのでしょうか? また、compareToを使用せずに、プログラム内に自分で書いた場合、処理速度は変化ありますか?

    • ベストアンサー
    • Java
  • String型の日付(2005/11/25)の比較

    Java初心者です。String型で2005/11/25 のように2つString型で日付を取得したときに、大小の比較をしたいのです。どういう方法が考えられますか?よろしくお願いします。

    • ベストアンサー
    • Java
  • Perlの日付の比較に関して

    現在perlを使ってCGIを作っているものです。 まだ、一ヶ月ちょっとの初心者と言うこともあり、 日付の操作の仕方で非常に苦労しています。 入力フォームには、リストボックスでそれぞれ、 ○○○○年 ○○月 ○○日 ○○時 ○○分があり、 フォームが表示されたときには、デフォルトで、本日の日付がセットされるようになっています。 送信ボタンを押す事で入力チェックがかかるのですが、 そのときに、上記の日付のリストボックスの値が、 本日よりも過去になっていたばあいは、エラーを返すと言う処理を作りたいのですが、どうしてもうまくいきません。 本日日付は、localtime関数で取れるのですが、 リストボックスにセットされている値を日付に変換する方法、 また、比較の仕方がさっぱりわかりません。 誰かわかる方がいましたら、ご教授ください。 具体的なソースも書いていただけると大変ありがたいです。 以上よろしくお願いします

    • ベストアンサー
    • Perl
  • 大小とか多少とかの比較

    2歳8ヶ月男子、10月より療育で月2回通っています。療育に通う前(8月)の発達検査は年相応との事でした。2回目はまだ受けていません。  大小・多少は単体だと解るようなんですが、比較が解らないようです。どうやって理解していく・どうやって教えていけばいいんでしょうか・・。  そういう話題を振ると、イヤなのか必ずフザけて全然話を聞きません。  こどもチャレンジのしまじろうとか好きなんで、チャレンジの本の絵本部分などは普通に聞いてくれるのに、そういう質問系の話になると、途端にふざけ始めます。  実物で例に出してもダメなんですよね・・。  例えば大きいみかんと小さいみかんを見せて「こっちは大きいね、こっちの方が小さいね」とかそんな感じで話題を振ると「イヤだ」とか言い始めて聞こうとしません。早くみかん食わせろって感じです。  言葉は2歳3ヶ月頃から3語文が出ていて、今はかなり話せるようになってきました。ぶつぎりの文章が多いですが、子供が言いたい事は大体わかります。他人が聞いても息子が言っている事は理解できる程度に話せるようになってきてます。まだ興奮すると宇宙語ですが・・。  言葉の意味自体は大小・多少などは解っているようなので、比較ってどう教えていけばいいんでしょうかね・・。この月齢ならもう理解できてて当然なのかもよく解りませんが、チャレンジなどを見てるとそういう比較の問題があるので、そろそろ理解するべき事なんだろうな・・なんて思いまして。  見分けるのは得意のようなので、理解すれば早いと思うのですが・・。  よろしくお願いします。

  • 日付の比較

    こんばんは^^ 1) 標題の通り、日付の比較を行いたいのです。 Stringで例えば、「20021207」と「20020601」とか 西暦の年月日をもっているとします。 この2つを比較したいのです。 調べた所では、Dateクラス、Calenderクラスに after()やbefore()のメソッドがあって、それを 使えばいいと言う所までわかりました。 それで、DateクラスのコンストラクタにStringの文字を渡せる のですが、それは推奨されてないみたいで・・・・・。 DateFormatは使い方がいまいちわからなくて。。 どのようにして、Stringの文字列(年月日)をDateやCalender型 に変換して、比較を行えば良いでしょうか?? (簡単なサンプルを見せていただけると助かります) #intに変換して大小を比較する事も出来そうですが、それは #あまりやりたくないので、質問させてもらいました。 #よろしくお願いします。 2) あと、intに変換して比較することと比べて、DateやCalenderクラスの after()やbefore()を使うことによるメリットって何でしょうか?? (あまりメリットはない??) こちらは、興味で追加質問させていただきます。 ご存知の方、ご教示いただけると嬉しく思います。 非常にあつかましいとは思いますが、よろしくお願いします。 #さらに違うやり方などもあれば教えてください。

    • ベストアンサー
    • Java
  • 大小の比較(対数の利用?)

    数学の問題で、単純な計算問題なのですがやり方が分かりません。 『12と3^√5の大小を比較せよ』 対数の単元で出てきた問題なのでおそらく対数を利用するものなのだと予想はつきますが、二つの数を何乗かしてみたり適当に対数をとったりしても、どうもうまくいきません……。 どなたか解き方が分かる方がいらっしゃいましたら、ご教授願います。 また、対数以外にも大小が分かる方法がありましたらご回答お願いします。

  • [COBOL]日付比較

    現在COBOLで以下のようなプログラムを作成しています。 受付日と今日の日付を比較して1ヶ月経過したデータと振り分ける。  1ヶ月経過したものは、削除分のデータとしてディスクに保存  1ヶ月経過していないものは、保存分のデータとしてディスクに保存 ただし、入力データは、受付日(6桁)に書かれているのは6桁(例:080524) 本日の日付は、システム時間で8桁(例:20080824) このままでは、桁数が違うので、比較することができないため、受付日を8桁にしたいと考えています。 つまり、「'20'+受付日」としたいのです。 この場合、どのようにすればよろしいのでしょうか? よろしくお願いします。

  • 【エクセル】日付同士の比較について

    以下について質問があります。 【実現したいこと】 2つの日付(本日と予定日)を比較して、以下を実現したいと考えています。 (1)本日から予定日までの日数を表示させる。(例:A1セルに結果を表示させる。) (2)予定日が本日を過ぎてしまった場合にセルを赤色に塗りつぶすと同時に、「-何日」という形で予定日よりも何日遅れているかについて日数を表示させたい。 【試したこと】 (L4に本日の日付、R列に予定日が記入されています。) ■「予定日-本日」と「=DATEDIF($L$4,$R15,"D")」の2つの方法。 「予定日-本日」の場合、まだ予定日が記入されていないセルがあると、「-41125」の様に日付を数値化した結果が表示されてしまいます。 「=DATEDIF($L$4,$R15,"D")」の場合は、本日を過ぎた場合、「#NUM!」が表示されてしまいます。 ご教示いただけると大変助かります。 よろしくお願いいたします。

  • Dateオブジェクトの大小比較のしかた?

    こんにちは,よろしくお願いします。 Dateオブジェクトを次のように作成しました。 var today = new Date(2008,8,21); var theday = new Date(2008,8,21); このようにすれば,同じ日付になると思うのですが, if(today == theday){ alert("=="); }else{ alert("!="); } として,判定すると != が表示されます。Dateオブジェクトの大小判定(日付の前後の比較)はどのように行うのでしょうか?(できないのかな???) 教えていただきたいと思います。よろしくお願いします。