- PR -

二つの日付の差を求めたいのですが。。。

投稿者投稿内容
taro
ぬし
会議室デビュー日: 2003/10/20
投稿数: 316
投稿日時: 2004-01-30 10:21
taroです。はじめまして。
日数が返るのでよければ、

コード:
gap = gap / (1000*3600*24);



でいかがでしょうか?
Math.ceilを使う意味は自分にもよく分かりませんでした。
win-winさんの紹介されてるURLの以下のメールくらいやればもっと正確に出ると思います。
(秒単位の計算ではうるう秒に対応できませんので)
http://java-house.jp/ml/archive/j-h-b/049924.html

(URL修正しました)

[ メッセージ編集済み 編集者: taro 編集日時 2004-01-30 10:43 ]
架空兎
ベテラン
会議室デビュー日: 2003/08/18
投稿数: 78
お住まい・勤務地: さいたま氏
投稿日時: 2004-01-30 10:30
ちょっと .NET 風に。。。^^;
# .NET では TimeSpan という構造体がある。
#構造体だけどコンストラクタとメソッドはある。

コード:

public class TimeSpan {
    private long millis;

    public TimeSpan(long millis) {
        this.millis = millis;
    }

    public int getDays() {
        return this.getTotalHours() / 24;
    }

    public int getTotalHours() {
        return this.getTotalMinutes() / 60;
    }

    public int getTotalMinutes() {
        return this.getTotalSeconds() / 60;
    }

    public int getTotalSeconds() {
        return (int)(this.millis / 1000);
    }

    public long getTotalMillis() {
        return this.millis;
    }
}


それぞれのメソッドの中で計算するか、コンストラクタで計算して
それぞれの値を保持してそれを返すかはお任せします。^^;
想馬
大ベテラン
会議室デビュー日: 2003/05/29
投稿数: 245
お住まい・勤務地: 神奈川・東京
投稿日時: 2004-01-30 10:34
こんな感じでどうでしょうか?

コード:

import java.util.*;

public class Test{

Test(){

// インスタンス取得
Calendar c1 = Calendar.getInstance();
Calendar c2 = Calendar.getInstance();

// 時間フィールドクリア
c1.clear();
c2.clear();

// 比較する日付をセット
c1.set( 2004, Calendar.JANUARY, 30 );
c2.set( 2003, Calendar.JANUARY, 31 );
Date t1 = c1.getTime();
Date t2 = c2.getTime();

// 日付の差を求める
long diff = t1.getTime() - t2.getTime();

// 日付の差 diff はミリ秒になっているので、
// 日数に計算して表示する
System.out.println( ( diff / 1000 / 60 / 60 / 24 ) );

}

public static void main( String argv[] ){

Test app = new Test();

}

}



#日付をセットするところが紛らわしいので修正
#でゅうくさん、御指摘ありがとうございます。

[ メッセージ編集済み 編集者: 想馬 編集日時 2004-01-30 16:22 ]
おかもと
大ベテラン
会議室デビュー日: 2003/06/08
投稿数: 182
投稿日時: 2004-01-30 10:37
もう試していると思いますが、Math.ceilを外してみてはどうでしょうか?
今回の用件では必要なさげです。引数の型もdoubleですし・・・。
がるがる
ぬし
会議室デビュー日: 2002/04/12
投稿数: 873
投稿日時: 2004-01-30 12:26
ども。がると申します。
以下、7割がた戯言なので、かるく読み流していただければ(笑

「どうもメソッドが見つからない」のであれば、とりあえず
「クラス使わずに自作」ってのはいかがでしょうか?

ちなみに日付の差分を求めるのであれば、以下の単語をGoogle
あたりで調べると面白い情報が入ると思います。
・グレゴリウス暦
・ジュリアン

ヒント。
・グレゴリウス暦ってのは、現在我々が慣れ親しんでいる暦です。
・ジュリアン暦ってのは、ある一点から「何日経過したか?」
 という暦です
たーぞう
ぬし
会議室デビュー日: 2003/08/08
投稿数: 317
お住まい・勤務地: お花畑
投稿日時: 2004-01-30 12:40
引用:

がるがるさんの書き込み (2004-01-30 12:26) より:
ども。がると申します。
以下、7割がた戯言なので、かるく読み流していただければ(笑

(略)
・グレゴリウス暦
・ジュリアン
(略)


すみません戯言のレスですですが。
「グレゴリウス」と書くなら「ユリウス」と書いてほしいです(笑)。
がるがる
ぬし
会議室デビュー日: 2002/04/12
投稿数: 873
投稿日時: 2004-01-30 13:28
ども。がるです。
引用:

たーぞうさんの書き込み (2004-01-30 12:40) より:
すみません戯言のレスですですが。
「グレゴリウス」と書くなら「ユリウス」と書いてほしいです(笑)。


しもた(笑
確かに「グレゴリウス暦」であるなら「ユリウス暦」で
あるべきですな ^^;
# ジュリアンだとグレゴリアンになってしまう(笑
ほむら
ぬし
会議室デビュー日: 2003/02/28
投稿数: 583
お住まい・勤務地: 東京都
投稿日時: 2004-01-30 13:42
ほむらです。
Javaで関係あるのか知りませんけど日付計算でceilを使用する理由は
Excelでセルの書式を数値にして日付計算するとかわるかも。

#ceilの利用自体は一般的?

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