C# 将日期范围拆分为几个范围?
我有一个开始日期和一个结束日期(sql server datetime格式)。我想把它分成几个范围,即开始和结束日期值的几对注意-我有.NET3.5和VisualStudio2008 S=2005。E=2010,区块大小=1年。 巴黎生成=2005-06、06-07、07-08、08-2010 区块可以是任意天数/月数。我把代码放在一个SO帖子中,在我的main方法之后,我得到了一些错误。后- 代码-C# 将日期范围拆分为几个范围?,c#,.net,datetime,date-range,C#,.net,Datetime,Date Range,我有一个开始日期和一个结束日期(sql server datetime格式)。我想把它分成几个范围,即开始和结束日期值的几对注意-我有.NET3.5和VisualStudio2008 S=2005。E=2010,区块大小=1年。 巴黎生成=2005-06、06-07、07-08、08-2010 区块可以是任意天数/月数。我把代码放在一个SO帖子中,在我的main方法之后,我得到了一些错误。后- 代码- public static IEnumerable<Tuple<DateTime,
public static IEnumerable<Tuple<DateTime, DateTime>> SplitDateRange(DateTime start, DateTime end, int dayChunkSize)
{
DateTime chunkEnd;
while ((chunkEnd = start.AddDays(dayChunkSize)) < end)
{
yield return Tuple.Create(start, chunkEnd);
start = chunkEnd;
}
yield return Tuple.Create(start, end);
}
公共静态IEnumerable SplitDateRange(DateTime开始、DateTime结束、int dayChunkSize)
{
日期时间块结束;
而((chunkEnd=start.AddDays(dayChunkSize))
我有两个错误:
“CodeHere.csproj.ScriptMain.SplitDateRange(System.DateTime,System.DateTime,int)”的主体不能是迭代器块,因为“IEnumerable”
以及:
当前上下文中不存在名称“Tuple”
您正在尝试使用,这只是在.NET4中介绍的。您正在使用.NET3.5,因此该结构不可用。我建议您创建自己的DateRange
类型,它封装了开始和结束DateTime
,然后返回一个IEnumerable
要么这样,要么升级到.NET 4或4.5…您正在尝试使用的,它只在.NET 4中引入。您正在使用.NET3.5,因此该结构不可用。我建议您创建自己的DateRange
类型,它封装了开始和结束DateTime
,然后返回一个IEnumerable
或者升级到.NET 4或4.5…这里有一个.NET 3.5的操作方法。正如其他人所说,Tuple在.NET3.5中不存在
using System;
using System.Collections.Generic;
namespace ConsoleApplication1
{
internal class Program
{
private static void Main(string[] args)
{
var myDateTime = new DateTime(2013, 10, 29);
var myEndDateTime = new DateTime(2014, 10, 29);
var result = SplitDateRange(myDateTime, myEndDateTime, 10);
var file = new System.IO.StreamWriter("c:\\dateFile.txt");
foreach (var item in result)
{
file.WriteLine("StartDate: {0}, EndDate: {1}", item.StartDateTime, item.EndDateTime);
}
file.Close();
}
public static IEnumerable<SplitDateTime> SplitDateRange(DateTime start, DateTime end, int dayChunkSize)
{
DateTime chunkEnd;
while ((chunkEnd = start.AddDays(dayChunkSize)) < end)
{
yield return new SplitDateTime(start, chunkEnd);
start = chunkEnd;
}
yield return new SplitDateTime(start, end);
}
}
public class SplitDateTime
{
public SplitDateTime(DateTime startDateTime, DateTime endDateTime)
{
StartDateTime = startDateTime;
EndDateTime = endDateTime;
}
public DateTime StartDateTime { get; set; }
public DateTime EndDateTime { get; set; }
}
}
使用系统;
使用System.Collections.Generic;
命名空间控制台应用程序1
{
内部课程计划
{
私有静态void Main(字符串[]args)
{
var myDateTime=新日期时间(2013,10,29);
var myEndDateTime=新日期时间(2014,10,29);
var result=SplitDateRange(myDateTime,myEndDateTime,10);
var file=new System.IO.StreamWriter(“c:\\dateFile.txt”);
foreach(结果中的var项目)
{
WriteLine(“StartDate:{0},EndDate:{1}”,item.StartDateTime,item.EndDateTime);
}
file.Close();
}
公共静态IEnumerable SplitDateRange(DateTime开始、DateTime结束、int dayChunkSize)
{
日期时间块结束;
而((chunkEnd=start.AddDays(dayChunkSize))
以下是一种.NET 3.5的工作方式。正如其他人所说,Tuple在.NET3.5中不存在
using System;
using System.Collections.Generic;
namespace ConsoleApplication1
{
internal class Program
{
private static void Main(string[] args)
{
var myDateTime = new DateTime(2013, 10, 29);
var myEndDateTime = new DateTime(2014, 10, 29);
var result = SplitDateRange(myDateTime, myEndDateTime, 10);
var file = new System.IO.StreamWriter("c:\\dateFile.txt");
foreach (var item in result)
{
file.WriteLine("StartDate: {0}, EndDate: {1}", item.StartDateTime, item.EndDateTime);
}
file.Close();
}
public static IEnumerable<SplitDateTime> SplitDateRange(DateTime start, DateTime end, int dayChunkSize)
{
DateTime chunkEnd;
while ((chunkEnd = start.AddDays(dayChunkSize)) < end)
{
yield return new SplitDateTime(start, chunkEnd);
start = chunkEnd;
}
yield return new SplitDateTime(start, end);
}
}
public class SplitDateTime
{
public SplitDateTime(DateTime startDateTime, DateTime endDateTime)
{
StartDateTime = startDateTime;
EndDateTime = endDateTime;
}
public DateTime StartDateTime { get; set; }
public DateTime EndDateTime { get; set; }
}
}
使用系统;
使用System.Collections.Generic;
命名空间控制台应用程序1
{
内部课程计划
{
私有静态void Main(字符串[]args)
{
var myDateTime=新日期时间(2013,10,29);
var myEndDateTime=新日期时间(2014,10,29);
var result=SplitDateRange(myDateTime,myEndDateTime,10);
var file=new System.IO.StreamWriter(“c:\\dateFile.txt”);
foreach(结果中的var项目)
{
WriteLine(“StartDate:{0},EndDate:{1}”,item.StartDateTime,item.EndDateTime);
}
file.Close();
}
公共静态IEnumerable SplitDateRange(DateTime开始、DateTime结束、int dayChunkSize)
{
日期时间块结束;
而((chunkEnd=start.AddDays(dayChunkSize))
问题是找不到元组
——您导入了系统
名称空间了吗?您使用的是.NET的v4.0还是更高版本?我使用的是System.Tuple,但我得到了错误。不确定我得到了哪个版本的.NET。但是,我猜它是3.XXNo,你应该有使用系统
-使用指令的命名名称空间,而不是类型(除非您正在创建别名)。但您确实需要找出您正在使用的.NET版本。您正在使用哪个版本的Visual Studio?您是否查看了项目属性以了解项目的目标?@JonSkeet-我使用visual studio 2008。好的,网络是3.5版。我已经有了使用系统;正当这就是问题所在<代码>元组
直到.NET 4才引入。问题是找不到元组
——您导入了系统
名称空间吗?您使用的是.NET的v4.0还是更高版本?我使用的是System.Tuple,但我得到了错误。不确定我得到了哪个版本的.NET。但是,我猜它是3.XXNo,你应该有使用系统
-使用指令的命名名称空间,而不是类型(除非您正在创建别名)。但您确实需要找出您正在使用的.NET版本。哪个版本