C# 将DateTime除以自定义增量,减至秒

C# 将DateTime除以自定义增量,减至秒,c#,list,datetime,reporting,timespan,C#,List,Datetime,Reporting,Timespan,小挑战。我好像想不出来 如果我有30个“区段”的计数,并且我想将任意两个(开始和结束)日期除以该值,我该如何做 var sections = 30; var start = new DateTime("2014-06-17T18:17:00.772Z"); var end = new DateTime("2014-06-17T19:10:29.123Z"); var dateRange = new List<DateTime>(); for(int i = 0; i < se

小挑战。我好像想不出来

如果我有30个“区段”的计数,并且我想将任意两个(开始和结束)日期除以该值,我该如何做

var sections = 30;
var start = new DateTime("2014-06-17T18:17:00.772Z");
var end = new DateTime("2014-06-17T19:10:29.123Z");
var dateRange = new List<DateTime>();

for(int i = 0; i < sections; i++)
{
// What! dateRange.Add( new DateTime(...) );
}
var段=30;
var开始=新日期时间(“2014-06-17T18:17:00.772Z”);
var end=新日期时间(“2014-06-17T19:10:29.123Z”);
var dateRange=新列表();
对于(int i=0;i
基本上,我需要30点数据

但当我开始把“秒或分钟的时间”作为开始和结束日期时,事情就变得复杂了

那么,如何始终捕获指定节计数中的日期

任何帮助都将不胜感激


Erik你应该可以这样做:

var sections = 30;
var start = new DateTime(2015,12, 1);
var end = new DateTime(2016, 3, 1);
var dateRange = new List<DateTime>();

var difference = (end - start).TotalMilliseconds;  //difference in milliseconds
var oneSection = difference/sections;    //length on one section in milliseconds
var tempDate = start;
for (int i = 0; i < sections - 1; i++)   //add one section less
{
    tempDate = tempDate.AddMilliseconds(oneSection);
    dateRange.Add(tempDate);
}
dateRange.Add(end);   //add end as last section
var段=30;
var开始=新日期时间(2015,12,1);
var end=新日期时间(2016年3月1日);
var dateRange=新列表();
变量差=(结束-开始).total毫秒//毫秒差
var oneSection=差异/部分//一个区段的长度(毫秒)
var tempDate=开始;
对于(int i=0;i
您可以计算开始日期和结束日期之间的差异。获取总秒数的差值,除以
秒数
(30),这将为您提供
开始
日期中所需的增量。稍后,您可以使用循环并填充
日期范围
,如:

var sections = 30;
var start = new DateTime(2015,1,1);
var end = new DateTime(2015,3,1);
var totalDays = Math.Abs((end - start).TotalSeconds);
var increment = totalDays / sections;
var dateRange = new List<DateTime>();
for (int i = 0; i < sections; i++)
{
    start = start.AddSeconds(increment);
    dateRange.Add(start);
}

我假设您希望开始和结束时间“bookend”各部分,这意味着您需要根据
N-1
段计算间隔。下面是一个使用Linq的单行程序:

var sections = 30;
var start = DateTime.Parse("2014-06-17T18:17:00.772");
var end = DateTime.Parse("2014-06-17T19:10:29.123");

var dateRange = Enumerable.Range(0,sections)
                          .Select(i => start.AddTicks((end-start).Ticks/(sections-1) * i));
收益率:

2014-06-17 18:17:00Z 
2014-06-17 18:18:51Z 
2014-06-17 18:20:42Z 
2014-06-17 18:22:32Z 
2014-06-17 18:24:23Z 
2014-06-17 18:26:13Z 
2014-06-17 18:28:04Z 
2014-06-17 18:29:55Z 
2014-06-17 18:31:45Z 
2014-06-17 18:33:36Z 
2014-06-17 18:35:27Z 
2014-06-17 18:37:17Z 
2014-06-17 18:39:08Z 
2014-06-17 18:40:58Z 
2014-06-17 18:42:49Z 
2014-06-17 18:44:40Z 
2014-06-17 18:46:30Z 
2014-06-17 18:48:21Z 
2014-06-17 18:50:12Z 
2014-06-17 18:52:02Z 
2014-06-17 18:53:53Z 
2014-06-17 18:55:44Z 
2014-06-17 18:57:34Z 
2014-06-17 18:59:25Z 
2014-06-17 19:01:15Z 
2014-06-17 19:03:06Z 
2014-06-17 19:04:57Z 
2014-06-17 19:06:47Z 
2014-06-17 19:08:38Z 
2014-06-17 19:10:29Z 

您的结束日期小于开始日期?不,不是30天。30个增量。因此,它满足的开始和结束日期仅相隔几分钟(或几小时、几秒或几毫秒)。您能否在问题中输入可编译的确切日期,以及您需要作为输出的确切内容?
2014-06-17 18:17:00Z 
2014-06-17 18:18:51Z 
2014-06-17 18:20:42Z 
2014-06-17 18:22:32Z 
2014-06-17 18:24:23Z 
2014-06-17 18:26:13Z 
2014-06-17 18:28:04Z 
2014-06-17 18:29:55Z 
2014-06-17 18:31:45Z 
2014-06-17 18:33:36Z 
2014-06-17 18:35:27Z 
2014-06-17 18:37:17Z 
2014-06-17 18:39:08Z 
2014-06-17 18:40:58Z 
2014-06-17 18:42:49Z 
2014-06-17 18:44:40Z 
2014-06-17 18:46:30Z 
2014-06-17 18:48:21Z 
2014-06-17 18:50:12Z 
2014-06-17 18:52:02Z 
2014-06-17 18:53:53Z 
2014-06-17 18:55:44Z 
2014-06-17 18:57:34Z 
2014-06-17 18:59:25Z 
2014-06-17 19:01:15Z 
2014-06-17 19:03:06Z 
2014-06-17 19:04:57Z 
2014-06-17 19:06:47Z 
2014-06-17 19:08:38Z 
2014-06-17 19:10:29Z