我有一个特定时期内员工的工作时间总和。我需要将此工作持续时间转换为天,小时和分钟。问题是我的日子等于9小时,而不是24小时。意味着我将持续时间除以9.但我得到的结果是积分,我无法转换为我的向往格式。以下是我的代码:
var Durations = TimeSpan.FromMinutes(db.Attendances.Where(x => x.EmployeeId == id)
.Sum(x => TimeSpan.Parse(x.Duration).TotalMinutes));
var TotalDuration = string.Format("{0}:{1}", Durations.TotalHours, Durations.Minutes);
这个工作绝对正常。我将按以下格式获得结果:
H:M
8:5
12:7
19:15
问题是当我将它除以9时,我需要将小时转换为天和小时。 19.如果我将19除以9,我得2.111111表示2天1小时。我怎样才能以天和小时的格式得到答案?
答案 0 :(得分:1)
我认为这应该回答你的问题:
TimeSpan s = new TimeSpan(20,0, 0);
int day = (int)s.TotalHours / 9;
int hour = (int)s.TotalHours % 9;
Console.WriteLine($"the duration in day is {day } hour {hour}");
答案 1 :(得分:0)
您可以向TimeSpan添加扩展方法。
public static (int day,int hour) GetDayAndHour(this TimeSpan timeSpan,int dayDuration == 9) {
var number= timeSpan.TotalHours/dayDuration;
int day = (int)Math.Truncate(number);
int hour= (int)Math.Truncate((number-day)*10);
return (day,hour);
}
我使用C#7元组。如果您使用以前的版本,请创建服装数据类型或使用Tuple<int, int>
。