我已经上了一堂课,我将在那里存储活动的持续时间。如你所见,我为每个人制作了字段,但最好是将其保存为秒,然后动态计算小时,分钟和秒?如果我这样做,我制作的添加方法会更简单,但有任何缺点吗?
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 :(得分: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。