我需要做的是在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;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句