好的,首先,我很确定我不会使用TimeSpan进行此项任务;而是一个公式系列,当用户在文本框中输入秒数时,会在消息框中显示秒,分和小时。
这是我被困的地方。我们应该用示例检查我们的答案:7565秒是2小时6分5秒。但是,我的代码最终将其计算为2小时,6分钟和6秒。当初始数字为7560秒时,它也会保留该答案。我很困惑!!这是一个条件场景,其中消息框仅显示用户输入60秒以下的秒数,如果用户输入60到3600秒则仅显示几分钟+秒,如果输入超过3600秒则显示小时+分钟+秒。以下是我到目前为止的情况,我很欣赏任何有关我的计算结果的见解:)
感谢您的回答!但7565并不是一个常数;用户可以输入任何秒数,但我的教授使用7565作为例子来检查我们是否在正确的轨道上。
private void calculateButton1_Click(object sender, EventArgs e)
{
int totalSeconds, hours, minutes, minutesRemainder, hoursRemainderMinutes, hoursRemainderSeconds;
totalSeconds = int.Parse(secondsTextBox1.Text);
minutes = totalSeconds / 60;
minutesRemainder = totalSeconds % 60;
hours = minutes / 60;
hoursRemainderMinutes = minutes % 60;
hoursRemainderSeconds = hoursRemainderMinutes % 60;
if (totalSeconds < 60)
{
MessageBox.Show(totalSeconds.ToString());
}
else if (totalSeconds < 3600)
{
MessageBox.Show(minutes.ToString() + " minutes, " + minutesRemainder.ToString() + " seconds");
}
else if (totalSeconds>3600)
{
MessageBox.Show(hours.ToString() + " hours, " + hoursRemainderMinutes.ToString() + " minutes, " + hoursRemainderSeconds.ToString() + " seconds");
}
}
答案 0 :(得分:9)
尝试使用 modular 算法
int totalSeconds = 7565;
int hours = totalSeconds / 3600;
int minutes = (totalSeconds % 3600) / 60;
int seconds = (totalSeconds % 60);
...
if (hours > 0)
MessageBox.Show(String.Format("{0} hours, {1} minutes, {2} seconds", hours, minutes, seconds));
else if (minutes > 0)
MessageBox.Show(String.Format("{0} minutes, {1} seconds", minutes, seconds));
else
MessageBox.Show(String.Format("{0} seconds", seconds));