2016-12-02 43 views
0

我想干什么?
我想根据用户的输入返回时间和显示。说,用户进入控制台starthour: 23startminute: 45duration (in min): 30那么开始时间段将为PM offcourse,你可以看到下面我基于上述事情计算开始时间,但问题是计算endtime。例如,在上述开始时间中,结束时间应该变为00:15,时间段为AM,而不是PM,例如开始时间。JAVA时间转换公式

我做了什么?

public String toString(){ 
int h = (getHour()==0 || getHour()==12) ? getHour() : getHour()%12; 
String period = (getHour()<12)? "AM" : "PM"; 
return String.format("%02d:%02d %s", h, getMinute(), period); 
} 

怎么办?
上述公式正确计算开始时间及其周期,但我需要一个类似的公式,可以根据用户输入的开始时间,开始分钟和持续时间正确计算endhour。

基本上,上面提到的代码需要被操纵来找出endhour,endminute和它的周期。

注意:请不要告诉本地时间用于获取结束时间和期限。三江源

编辑:这就是我现在做的事:

public String toString(){ 
int endh = (getEndHour()==0 || getEndHour()==12) ? getEndHour() : getEndHour()%12; 
String period = ((getEndHour() + duration) <12)? "AM" : "PM"; 
return String.format("%02d:%02d %s", endh, getEndHour(), period); 
} 
+0

就像你使用getHour()%12到24小时的时间以上午或下午,你可以使用模60,如果加入后的分钟大于60转换得到结束的分钟。如果添加后的小时数大于24,则可以使用模24来获得第二天的小时数(这显然必须在24小时到AM/PM转换之前完成) –

+0

@DavidChoweller,听起来不错。如果你的代码有效,我可以接受你的答案。谢谢 – Harry

+0

@DavidChoweller,我试过你刚刚说的,但是我不能这么做,如果你不介意的话,请你详细说明一下。代码是什么意思?谢谢 – Harry

回答

0

你应该用60模数的简单性。这里是

public class Timer { 
int hour; 

public int getHour() { 
    return hour; 
} 

public void setHour(int hour) { 
    this.hour = hour; 
} 

public int getMinutes() { 
    return minutes; 
} 

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

public void addDuration(int duration) { 
    hour = hour + (minutes + duration)/ 60; 
    minutes = (minutes + duration) % 60; 
} 

int minutes; 

@Override 
public String toString() { 
    int h = (getHour() == 0 || getHour() == 12) ? getHour() 
      : getHour() % 24; 
    String period = (getHour() < 12) ? "AM" : "PM"; 
    return String.format("%02d:%02d %s", h, getMinutes(), period); 

} 

public static void main(String args[]) { 
    Timer time = new Timer(); 
    time.setHour(23); 
    time.setMinutes(45); 
    System.out.println(time.getHour()); 
    time.addDuration(30); 
    System.out.println(time.getHour()); 
    System.out.println(time); 

} 

}