C#:几分钟到几分钟到几小时的转换?

时间:2014-09-12 06:45:48

标签: c# data-conversion

好的,首先,我很确定我不会使用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");
        }

    }

1 个答案:

答案 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));