将字符串小时和分钟转换为C#中的天/小时/分钟?

时间:2018-04-24 10:16:27

标签: c# entity-framework datetime timespan

我有一个特定时期内员工的工作时间总和。我需要将此工作持续时间转换为天,小时和分钟。问题是我的日子等于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小时。我怎样才能以天和小时的格式得到答案?

2 个答案:

答案 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>