创建一个处理时间的自定义java类

时间:2012-02-20 18:05:00

标签: 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) {

    }
}

3 个答案:

答案 0 :(得分:4)

使用现有的库会更好,例如Joda

答案 1 :(得分:0)

考虑java.util.Date类。

诀窍是Date包裹了一个时间戳,表示为从1970年1月1日格林尼治标准时间上午12:00开始经过的毫秒数。可以使用getTime()方法获取此字段。

要获取事件的持续时间,请创建两个Date个对象(开始时间和停止时间),然后简单地减去两个时间戳(它们只是long值)。

然后,要按小时,分钟,秒等格式对其进行格式化,您可以执行以下操作:

    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);

答案 2 :(得分:0)

除非你想在你的发行版中添加额外的jar,否则我只想使用java.util.Calendar。