- ベストアンサー
javaでの日付の大小比較について
javaでの日付の大小比較について分からない事があります。 (1)例:2002/04/01と本日の日付(例:2002/06/03)の大小関係を調べるにはどうす ればよろしいのでしょうか? 何か分かる事がありましたら、ご教授お願い致します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>例えば、今日の日付(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」 インプレス社発行の本をいつも手元に置いています。
その他の回答 (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ドキュメントは違うのでしょうか?
- -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リファレンスを引いてみてくださいな ほいでは(^-^/~~
お礼
回答ありがとうございました。 なんとか問題解決しました。 今回はどうもありがとうございました。 また何かありましたら宜しくお願い致します。
- -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()メソッドの使用例をご教授してもらえないでしょうか? 図々しくて大変申し訳ございません。
お礼
回答どうもありがとうございます。 非常に分かりやすいサンプルのコードだけでなく、 参考の書籍も合わせてご教授頂き、大変感謝しております。 これからも勉強に励んで、yujiさんのように質問に答える側になるよう 頑張りたいと思います。 今回は本当にどうもありがとうございました。