我是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();
}
答案 0 :(得分:6)
循环不是你需要的。您可以使用DateTime
和Timespan
:
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;