如何获得c#中的总小时数,可能超过24小时
我需要一个月的总工作时间如何获得c#中的总小时数,可能超过24小时,c#,model-view-controller,timestamp,timespan,C#,Model View Controller,Timestamp,Timespan,我需要一个月的总工作时间 ex:7:30+8:00+6:30+9:30其31:30我需要答案为31:30 我尝试了TimeSpan // create new timespan TimeSpan total = TimeSpan.Zero; // iterate through items foreach (var count in model.Items) { TimeSpan totalDonationSum = TimeSpan.Parse(count.Ho
ex:7:30+8:00+6:30+9:30其31:30
我需要答案为31:30
我尝试了TimeSpan
// create new timespan
TimeSpan total = TimeSpan.Zero;
// iterate through items
foreach (var count in model.Items)
{
TimeSpan totalDonationSum = TimeSpan.Parse(count.Hours);
total += totalDonationSum;
}
我得到的总数大约是1.06:21:00(如果超过24小时),我不希望这样
double totalHours = (TimeSpan.FromDays(1) + TimeSpan.FromHours(7)).TotalHours;
如果我做错了什么,或者我要做一些与此不同的事情,请让我来帮助您使用
TimeSpan.TotalHours
属性
您可以使用TimeSpan执行算术运算,以获得TimeSpan
作为结果,然后获得其TotaHours
属性,如下所示
double totalHours = (TimeSpan.FromDays(1) + TimeSpan.FromHours(7)).TotalHours;
totalHours
在这种情况下的值为31。使用TimeSpan.totalHours
属性
您可以使用TimeSpan执行算术运算,以获得TimeSpan
作为结果,然后获得其TotaHours
属性,如下所示
double totalHours = (TimeSpan.FromDays(1) + TimeSpan.FromHours(7)).TotalHours;
在这种情况下,
totalHours
的值为31。使用该值,可以将小时和分钟分开:
// create new timespan
TimeSpan total = TimeSpan.Zero;
// iterate through items
foreach (var count in model.Items)
{
TimeSpan totalDonationSum = TimeSpan.Parse(count.Hours);
total += totalDonationSum;
}
// calculate
int hours = (int)total.TotalHours;
int minutes = total.Minutes;
// display
string time = hours.ToString("00") + ":" + minutes.ToString("00");
这样,您就可以分为几小时和几分钟:
// create new timespan
TimeSpan total = TimeSpan.Zero;
// iterate through items
foreach (var count in model.Items)
{
TimeSpan totalDonationSum = TimeSpan.Parse(count.Hours);
total += totalDonationSum;
}
// calculate
int hours = (int)total.TotalHours;
int minutes = total.Minutes;
// display
string time = hours.ToString("00") + ":" + minutes.ToString("00");
尝试使用分钟来计算,以小时为结束格式 此代码应该可以帮助您:
int totalMinutes = 0;
foreach (var count in model.Items)
{
DateTime totalDonationSum = DateTime.Parse(count.Hours);
totalMinutes += (totalDonationSum.Hour*60) + totalDonationSum.Minute;
}
TimeSpan span = TimeSpan.FromMinutes(totalMinutes);
string hoursFormatThatYouWant = span.ToString(@"hh\:mm\:ss");
//If you use a console or you can change for MessageBox or Alert :)
Console.WriteLine("Total Hours:" + hoursFormatThatYouWant);
尝试使用分钟来计算,以小时为结束格式 此代码应该可以帮助您:
int totalMinutes = 0;
foreach (var count in model.Items)
{
DateTime totalDonationSum = DateTime.Parse(count.Hours);
totalMinutes += (totalDonationSum.Hour*60) + totalDonationSum.Minute;
}
TimeSpan span = TimeSpan.FromMinutes(totalMinutes);
string hoursFormatThatYouWant = span.ToString(@"hh\:mm\:ss");
//If you use a console or you can change for MessageBox or Alert :)
Console.WriteLine("Total Hours:" + hoursFormatThatYouWant);
通过使用TimeSpan.Hours属性: //创建带有大量刻度的TimeSpan值。 写入(“\n{0,-45}”,“TimeSpan(111222333444555)”; ShowTimeSpan属性(新TimeSpan(111222333444555)) Console.WriteLine(“{0,-12}{1,8}{2,-18}{3,21:N3}”,“小时”, interval.Hours,“TotalHours”,interval.TotalHours)
来源:通过使用TimeSpan.Hours属性: //创建带有大量刻度的TimeSpan值。 写入(“\n{0,-45}”,“TimeSpan(111222333444555)”; ShowTimeSpan属性(新TimeSpan(111222333444555)) Console.WriteLine(“{0,-12}{1,8}{2,-18}{3,21:N3}”,“小时”, interval.Hours,“TotalHours”,interval.TotalHours)
来源:Timespan具有TotalHours属性。在上述代码中,我如何使用?你能帮忙吗,我试过了,但语法错误我想你可能想把时间转换成十进制,因为31:00在Datetime中没有意义,请看这里如何转换成十进制:是的,但如果我得到31:30这样的总小时数,那将是31.5,因此很难理解最终用户数的格式,你做错了什么,是的,可以用不同的方式来做。如果您需要更详细的答案,请参阅并更新问题。Timespan具有TotalHours属性。在上述代码中,我如何使用?你能帮忙吗,我试过了,但语法错误我想你可能想把时间转换成十进制,因为31:00在Datetime中没有意义,请看这里如何转换成十进制:是的,但如果我得到31:30这样的总小时数,那将是31.5,因此很难理解最终用户数的格式,你做错了什么,是的,可以用不同的方式来做。如果您需要更详细的答案,请参阅并更新问题。请查看。请在几分钟内查看。如果我得到02,那么我只得到2,因为我们得到INT,任何其他获取值的替代方法,如28:2到28:02,您可以使用integerValue.ToString(“00”);然后它会用一个前导零来转换它。几分钟后,如果我得到02,那么我得到的是唯一的2,因为我们得到INT,除了得到28:2到28:02这样的值之外,任何其他方法都可以使用integerValue.ToString(“00”);然后它将用前导零进行转换。