转换时间输入从24小时时钟,秒,并返回到24小时格式

本文关键字:24小时 返回 格式 时钟 时间 输入 转换 | 更新日期: 2023-09-27 18:09:02

我需要做的是在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}";

转换时间输入从24小时时钟,秒,并返回到24小时格式

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

操作是以整数形式进行的,因此(660 + 15)/100得到的结果是11。请记住,即使将其强制转换为double类型,结果也会是11.25,而不是11.15。

你必须添加另一个部分,类似于你解构时间来处理分钟部分,所以

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