- PR -

2つの日付の引き算の質問です。m(_ _)m

1
投稿者投稿内容
未記入
会議室デビュー日: 2007/09/08
投稿数: 2
投稿日時: 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さま 教えてください。

よろしくおねがいします。

あしゅ
ぬし
会議室デビュー日: 2005/08/05
投稿数: 613
投稿日時: 2007-09-08 22:17
java.text.SimpleDateFormatでjava.util.Dateに解析すれば
双方のgetTime()の結果からミリ秒単位の差分を取れます。
あとは除算で単位を日に変換するだけです。
未記入
会議室デビュー日: 2007/09/08
投稿数: 2
投稿日時: 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,); //(DD)
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,); //(DD)
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

 ですが、これでは少々問題がありまして、、、
 やはり、これ以上のロジックは無理なのでしょうか。。
 かなり、たくさんの処理をする必要があり、もっと簡素化したいのです。

 どうか、皆さま ご教授お願い致します。
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 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

スキルアップ/キャリアアップ(JOB@IT)