1

我是 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();
}
4

3 回答 3

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 年 4 月 7 日)创建了两个DateTime对象。一个有开始时间08:00和结束时间16:00(下午 4 点)。

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

于 2013-07-04T08:19:07.373 回答
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单独使用。无论如何都使用它来表明它允许提供其他属性,例如分钟或秒。

于 2013-07-04T08:21:23.397 回答
0

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

          double totalHours = (DateTime.Now - DateTime.Now).TotalHours;
于 2013-07-04T08:28:07.027 回答