计算一段时间内每小时的分钟细分

我正在尝试在一段时间内每小时细分几分钟。例如,假设我有两个类似的DateTime:

DateTime onTime = new DateTime(2019,11,6,30,0);
DateTime offTime = new DateTime(2019,10,45,0);

因此有两个DateTimes表示:

"2019-11-06 06:30:00"
"2019-11-06 10:45:00"

我要达到的目标是在给定时间段内每小时细分几分钟。我希望它看起来像:

int 6 = 30; // Hour 6 = 30 minutes
int 7 = 60; // Hour 7 = 60 minutes
int 8 = 60; // Hour 8 = 60 minutes
int 9 = 60; // Hour 8 = 60 minutes
int 10 = 45; // Hour 10 = 45 minutes

我可以确定是尝试使用LINQ还是仅使用自我引用的迭代函数来获得所需的效果。

SHIRPEY 回答:计算一段时间内每小时的分钟细分

唯一有趣的值是第一个组成部分和最后一个组成部分,无论如何(如果存在至少一个小时的间隔),所有其他值将为public static IEnumerable<int> GetBreakdown(DateTime onTime,DateTime offTime) { if (offTime < onTime) { throw new ArgumentException(); } // Case where the two times start at the same hour if (onTime.Hour == offTime.Hour) { yield return offTime.Minute - onTime.Minute; yield break; } // Nominal case yield return 60 - onTime.Minute; for (int i = onTime.Hour + 1; i < offTime.Hour; i++) { yield return 60; } if (offTime.Minute != 0) { yield return offTime.Minute; } } 。这就是为什么我要使用以下代码:

DateTime onTime = new DateTime(2019,11,6,30,0);
DateTime offTime = new DateTime(2019,10,45,0);
foreach (var value in GetBreakdown(onTime,offTime)) {
    Console.WriteLine(value);
}
// Prints:
// 30
// 60
// 60
// 60
// 45

您可以使用这种方式:

Date

请注意,它假定两者都在同一天,因此不考虑输入的IEnumerable<int>分量。在这里,您可以轻松地将返回类型从IEnumerable<(int,int)>更改为yield,并进行更改以返回每个Main-item -Sub-item --Sub-sub-item Main-item2 etc 中的小时部分。

本文链接:https://www.f2er.com/3153504.html

大家都在问