【发布时间】:2013-07-12 05:26:17
【问题描述】:
我想在 C# 中以相等的间隔划分时间。比如从下午 3:00 到下午 6:00 创建间隔为 45 分钟的时间间隔(例如,下午 3:00、下午 3:45、下午 4:30 .... 下午 6:00。 如何在 C# 中实现这一点?
【问题讨论】:
-
基于问题中提供的有限细节,这太难回答了。根据您的要求,可以有多种方法来解决此问题
我想在 C# 中以相等的间隔划分时间。比如从下午 3:00 到下午 6:00 创建间隔为 45 分钟的时间间隔(例如,下午 3:00、下午 3:45、下午 4:30 .... 下午 6:00。 如何在 C# 中实现这一点?
【问题讨论】:
您可以使用DateTime.Ticks 属性来定义您的时间间隔,然后根据您定义的时间间隔创建一系列 DateTime 对象。下面的示例可以在LINQpad 中运行。根据文档,一秒钟内有 10000000 个滴答声。考虑到这一点:
var startTS = Convert.ToDateTime("6/17/2018 15:00:00");
var endTS = Convert.ToDateTime("6/17/2018 18:00:00");
long ticksPerSecond = 10000000;
long ticksPerMinute = ticksPerSecond * 60;
long ticksPer45Min = ticksPerMinute * 45;
long startTSInTicks = startTS.Ticks;
long endTsInTicks = endTS.Ticks;
for(long i = startTSInTicks; i <= endTsInTicks; i+=ticksPer45Min)
{
new DateTime(i).Dump();
}
在 LINQpad 中,输出如下所示:
6/17/2018 15:00:00
6/17/2018 15:45:00
6/17/2018 16:30:00
6/17/2018 17:15:00
【讨论】:
试试这个
DateTime StartTime = DateTime.Parse("3:0:0");//If pm it should be 15
DateTime EndTime = DateTime.Parse("6:0:0");//If pm it should be 18
while (StartTime!=EndTime)
{
double minuts = +45;
StartTime = StartTime.AddMinutes(minuts);
}
希望对你有帮助
【讨论】:
endTime 完全匹配。如果不是这种情况,循环将永远持续下去。
Datetime.AddMinutes(double value) 应该可以满足您的需求。继续添加,直到添加的结果超过您拥有的最大日期/时间。
注意:这假设您知道您的间隔。另一方面,如果您需要将时间跨度分成相等的 n 部分,则需要采用不同的方法,如 here 所示。
【讨论】: