转换时间输入从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}";
int newEndHours = (totalEnd + totalMinutes) / HOUR * HUNDRED;
操作是以整数形式进行的,因此(660 + 15)/100得到的结果是11。请记住,即使将其强制转换为double类型,结果也会是11.25,而不是11.15。
你必须添加另一个部分,类似于你解构时间来处理分钟部分,所以
int newEndHours = (totalEnd + totalMinutes) / HOUR * HUNDRED + (totalEnd + totalMinutes) % HOUR;