2016-12-02 67 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); 

} 

}