以文本形式输入的时间之差

时间:2013-07-04 08:13:16

标签: c# .net datetime

我是c#的新手,我一直在尝试创建一个显示工作小时数的代码。例如,一个工作时间从早上8点到下午4点意味着他每天工作8小时。 我想要一个显示他工作了几个小时的代码。

我试过循环,但我没有把它弄好.. 请帮帮我

int from = Convert.ToInt32(frA.Text);
int to = Convert.ToInt32(toA.Text);

for (from = 0; from <= to; from++)
{
    totalA.Text = from.ToString();
}

3 个答案:

答案 0 :(得分:6)

循环不是你需要的。您可以使用DateTimeTimespan

    DateTime start = new DateTime(2013, 07, 04, 08,00, 00);
    DateTime end = new DateTime(2013, 07, 04, 16,00, 00);

    TimeSpan ts = end - start;

    Console.Write(ts.Hours);

在这里,我为今天(2013年7月4日)创建了两个DateTime个对象。其中一个的开始时间为08:00,结束时间为16:00(下午4点)。

Timespan对象ts会减去这些日期,然后您可以使用.Hours属性。

答案 1 :(得分:1)

首先必须将字符串转换为int,然后才能初始化TimeSpan结构:

int from, to;
if (int.TryParse(frA.Text, out from) && int.TryParse(toA.Text, out to))
{
    if (to <= from)
        MessageBox.Show("To must be greater than From.");
    else
    {
        TimeSpan workingHours = TimeSpan.FromHours(to - from);
        // now you have the timespan
        int hours = workingHours.Hours;
        double minutes = workingHours.TotalMinutes;
        // ...
    }
}
else
    MessageBox.Show("Please enter valid hours.");

这里你真的不需要TimeSpan,你也可以单独使用int。无论如何使用它表明它允许提供其他属性,如分钟或秒。

答案 2 :(得分:0)

如果可以将这些输入带到DateTime,那么您可以像下面的代码行那样进行

          double totalHours = (DateTime.Now - DateTime.Now).TotalHours;