小挑战。似乎无法弄清楚。
如果我有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(...) );
}
基本上,我需要30点数据。
但是当我开始经过&#34;秒或几分钟的时间时它变得复杂了#34;作为开始和结束日期。
那么我如何总是在指定的部分计数中捕获日期?
非常感谢任何帮助。
埃里克
答案 0 :(得分:1)
你应该能够这样做:
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
答案 1 :(得分:1)
您可以计算开始日期和结束日期之间的差异。获得总秒数的差异,除以seciotns
(30),这将为您提供start
日期所需的增量。稍后您可以使用循环并填写dateRange
,如:
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);
}
列表中的最后一项不会是end
日期。如果您想将end
作为列表中的最后一项,请明确地执行以下操作:
dateRange[dateRange.Count - 1] = end;
答案 2 :(得分:0)
我假设您希望开始和结束时间“勾起”这些部分,这意味着您需要根据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