【问题标题】:Converting string hours and minutes into Days/Hours/Minutes in C#?在 C# 中将字符串小时和分钟转换为天/小时/分钟?
【发布时间】:2018-04-24 10:16:27
【问题描述】:

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

【问题讨论】:

  • 你的舍入机制是什么?
  • 我正在使用 Math.Truncate。
  • 出了什么问题:Days = Durations.TotalHours / 9;小时 = 持续时间。总小时数 % 9;分钟 = 持续时间.分钟; TotalDuration = string.Format("{0}/{1}/{2}", Days, Hours, Minutes); ?
  • 我想将我的小时数转换为天数和小时数。一天的持续时间是 9 小时,而不是 24 小时。
  • 所以我的建议应该可行...

标签: c# entity-framework datetime timespan


【解决方案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}");

【讨论】:

  • 为什么((int)s.TotalMinutes - (day*9 * 60))/60 而不是简单地做s.TotalHours % 9? (我不明白你为什么要使用总分钟数而不是总小时数)
  • 是的,你说得对,只是一样,而且简化了逻辑。
  • 次要挑剔:由于您只在TimeSpan 中输入小时数并且仅使用TimeSpan 中的TotalHours,因此您可以只使用int 而不是TimeSpan。当前代码实际上并不依赖任何TimeSpan 逻辑。
  • 是的,但是从上面的问题上下文来看,代码具有时间跨度类型而不是常规 int。这只是为了确保它适用于上述场景
【解决方案2】:

您可以向 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>

【讨论】:

  • 这是有效的 c# 语法吗?
  • 是的,使用 c#7 元组,它是
  • 很酷的东西。无论如何,我建议用 c#6 发布这个,因为大多数人仍然使用 c#6
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-28
  • 1970-01-01
  • 1970-01-01
  • 2014-12-01
  • 2019-02-22
  • 1970-01-01
相关资源
最近更新 更多