2016-09-27 122 views
0

我需要做的是在24小時時鐘上採取時間窗口,即:1000-1100 將其轉換爲秒數,我可以這樣做。將時間輸入從24小時轉換爲秒,然後再轉換爲24小時格式

(1000/100)* 60 = 600

(1100/100)* 60 = 660

獲取的結果(15),這是我還可以做的25%。 (660/4)

添加額外秒25%至先前的結束時間(1100)

的問題是,我得到的1100的輸出,而不是1115 的問題是我怎麼做它輸出爲1115.

我確實使用常量來定義小時和百年,所以沒有幻數,這些數字只是說明數學。

//define constants 
    const int HUNDRED = 100; 
    const int HOUR = 60; 
    const int PERCENT = 4; 
    private void Form1_Load(object sender, EventArgs e) 
    { 

    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     // recieve start time input 
     string oldStart = oldStartTime.Text; 
     int oldTimeIn = int.Parse(oldStart); 

     // recieve end time input 
     string oldEnd = oldEndTime.Text; 
     int oldTimeEnd = int.Parse(oldEnd); 

     // convert start time to minutes 
     int hoursStart = (oldTimeIn/HUNDRED) * HOUR; 
     int minutesStart = oldTimeIn % HUNDRED; 
     int totalStart = hoursStart + minutesStart; 

     // convert end time to minutes 
     int hoursEnd = (oldTimeEnd/HUNDRED) * HOUR; 
     int minutesEnd = oldTimeEnd % HUNDRED; 
     int totalEnd = hoursEnd + minutesEnd; 

     // calulate 25% of travel time (end - start) 
     int extraTime = totalEnd - totalStart; 
     int totalMinutes = (extraTime/PERCENT); 

     // convert back to hours    
     int newEndHours = (totalEnd + totalMinutes)/HOUR * HUNDRED; 

     // out put new end time 
     newEndTime.Text = $"{newEndHours:d4}"; 
+2

請告訴我們你的代碼,這將有助於我們找出問題的原因。 –

+0

爲什麼不使用'DateTime'和'TimeSpan'類?不要重新發明輪子:)。 –

+0

我不知道這些是什麼......我真的很新,並且剛剛離開我在在線課程中學到的知識,並且沒有提到有關DateTime和TimeSpan的任何信息。這也是一種形式,如果有幫助 –

回答

0
int newEndHours = (totalEnd + totalMinutes)/HOUR * HUNDRED; 

操作正在做爲整數,所以(660 + 15)/ 100出來作爲11.請記住,即使它被澆鑄到雙打,這將導致11.25,和不是11.15。

你將不得不在類似的,當你解構處理分鐘時部另一部分補充,所以

int newEndHours = (totalEnd + totalMinutes)/HOUR * HUNDRED + (totalEnd + totalMinutes) % HOUR; 
相關問題