2012-02-20 15 views
0

イベントの期間を保存するクラスを作成しました。あなたが見ているように、私はそれぞれのフィールドを作っていますが、それを秒として保存し、その時、時、分、秒を計算する方が良いでしょうか?私が作成したaddメソッドは、そうした方が簡単ですが、欠点はありますか?時間を処理するカスタムJavaクラスを作成する

public class Duration { 

    private int hours; 
    private int minutes; 
    private int seconds; 

    public Duration(int hours, int minutes, int seconds) { 
     setHours(hours); 
     setMinutes(minutes); 
     setSeconds(seconds); 
    } 

    public int getHours() { 
     return hours; 
    } 

    public void setHours(int hours) { 
     this.hours = hours; 
    } 

    public int getMinutes() { 
     return minutes; 
    } 

    public void setMinutes(int minutes) { 
     this.minutes = minutes; 
    } 

    public int getSeconds() { 
     return seconds; 
    } 

    public void setSeconds(int seconds) { 
     this.seconds = seconds; 
    } 

    public void add(Duration duration) { 

    } 
} 
+0

この宿題はありますか?外部ライブラリを使用しないようにする必要がありますか? – talnicolas

+0

http://stackoverflow.com/questions/439903/java-equivalent-to-cs-timespan-このコードを自分で書く必要はありません。 – Matthias

+0

秒単位で保存し、必要に応じて時間と分を計算する方がよいでしょう。そうしないと、算術演算が難しくなります。また、範囲の検証が必要です。 – SLaks

答えて

4

Jodaなどの既存のライブラリを使用する方がはるかに良いでしょう。

+0

私が必要とするのはちょうど時間です(hh:mm:ss)。イベントの長さのように。私は年、タイムゾーンなどを気にしません。 – user626912

+0

'LocalTime'クラスをチェックしてください。http://joda-time.sourceforge.net/api-release/org/joda/time/LocalTime .html - 本当にあなたのアプリケーションの実際のロジックや時間処理の実装に時間を費やしたいですか? – Peter

0

java.util.Dateクラスを検討してください。

Dateは、1970年1月1日午前12時(GMT)から経過したミリ秒数で表されたタイムスタンプをラップします。このフィールドはgetTime()メソッドで取得できます。

イベントの継続時間を取得するには、2つのDateオブジェクト(開始時刻と終了時刻)を作成し、2つのタイムスタンプ(単にlong値)を減算します。あなたのディストリビューションに追加のjarファイルを追加する場合を除き

long milliseconds = elapsedInMilliseconds % 1000; 
    long seconds = elapsedInMilliseconds/1000 % 60; 
    long minutes = elapsedInMilliseconds/(60 * 1000) % 60; 
    long hours = elapsedInMilliseconds/(60 * 60 * 1000) % 24; 
    long days = elapsedInMilliseconds/(24 * 60 * 60 * 1000); 
0

すると、私はただのJavaを使用します。

次に、あなたのような何かを行うことができ、などの時間、分、秒、という点で、それをフォーマットします.util.Calendar。

関連する問題