- - PR -
2つの日付の引き算の質問です。m(_ _)m
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2007-09-08 21:51
はじめまして、子太郎と申します。
JAVA技術者の方にご質問です。 ■String型の2つの日数を簡単にかつシンプルに日数の差だけを出すには どのような、記述がベストなのでしょうか。 ((下記のString型2個を day2 - day1 = 30にしたいのです。。)) String day1 = "20071001"; // DBから抽出します。(変動) String day2 = "20071031"; // DBから抽出します。(変動) ※ 最終戻り値は、date、Stringどちらでもかまいません。 いろいろとネットで調べ、時間にまで落とし変換し ロジックは作成したのですが、長すぎるとSEさまに、指摘されてしまってこまっております。 シンプルなロジックを教えてください。。 今の実装では、30をを得るまでに、17行つかってしまいます。 プロのPGさま 教えてください。 よろしくおねがいします。 |
|
投稿日時: 2007-09-08 22:17
java.text.SimpleDateFormatでjava.util.Dateに解析すれば
双方のgetTime()の結果からミリ秒単位の差分を取れます。 あとは除算で単位を日に変換するだけです。 |
|
投稿日時: 2007-09-08 22:48
あしゅさま
ご回答ありがとうございます。 おそらく、下記のようなロジックになるのかと思います。 // "20071001"が入っています。 String day1 = dbObj.getday1(); int yyyyday1 = Integer.parseInt(day1.substring(0,4)); // (YYYY) int mmday1 = Integer.parseInt(day1.substring(4,6)); // (MM) int ddday1 = Integer.parseInt(day1.substring(6, ![]() Calendar day1Cal = Calendar.getInstance(); day1Cal.set(yyyyday1, mmday1, ddday1); Date PaswordDate = day1Cal.getTime(); long day_1 = PaswordDate.getTime(); // "20071031"が入っています。 String day2 = dbObj.getday2(); int yyyyday2 = Integer.parseInt(day2.substring(0,4)); // (YYYY) int mmday2 = Integer.parseInt(day2.substring(4,6)); //(MM) int ddday2 = Integer.parseInt(day2.substring(6, ![]() Calendar day2Cal = Calendar.getInstance(); day2Cal.set(yyyyday2, mmday2, ddday2); Date paswordDate = day2Cal.getTime(); long day_2 = paswordDate.getTime(); System.out.println ( "結果は → " + Math.ceil((day_2 - day_1 / 1000 / 60 / 60 /24) ); 答え 30 ですが、これでは少々問題がありまして、、、 やはり、これ以上のロジックは無理なのでしょうか。。 かなり、たくさんの処理をする必要があり、もっと簡素化したいのです。 どうか、皆さま ご教授お願い致します。 |
|
投稿日時: 2007-09-08 23:13
ちゃんと人の言うこと聞きましょうよ。
言われたとおりSimpleDateFormatを調べましょう。 parseというメソッドがあります。 正確には親のDateFormatのparseメソッドのオーバーロード側を使いますが。 http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/text/DateFormat.html#parse(java.lang.String) |
1