C# 将DateTime除以自定义增量,减至秒
小挑战。我好像想不出来 如果我有30个“区段”的计数,并且我想将任意两个(开始和结束)日期除以该值,我该如何做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
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