簡體   English   中英

將輸入的時間從24小時制轉換為秒,然后再轉換為24小時制

[英]Converting time input from 24hr clock , to seconds, and back to 24 hr format

我需要做的是在24小時時鍾上選擇一個時間窗口,即:1000-1100將其轉換為秒,這是我可以做的。

(1000/100)* 60 = 600

(1100/100)* 60 = 660

獲得結果的25%(15),我也可以這樣做。 (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}";
int newEndHours = (totalEnd + totalMinutes) / HOUR * HUNDRED;

該操作是作為整數完成的,因此(660 + 15)/ 100的結果為11。請記住,即使將其強制轉換為雙精度值,也將得到11.25,而不是11.15。

您將不得不添加類似於解構時間來處理分鍾部分的其他部分,因此

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM