C# 如何在范围内获得天数
我有两个日期时间范围,分别为2011年8月27日和2011年8月31日。我如何安排所有日期?比如:2011年8月28日、2011年8月29日和2011年8月30日C# 如何在范围内获得天数,c#,datetime,C#,Datetime,我有两个日期时间范围,分别为2011年8月27日和2011年8月31日。我如何安排所有日期?比如:2011年8月28日、2011年8月29日和2011年8月30日 谢谢从datetimes和datetime创建一个新日期,以确保它们位于一天的开始。然后运行从starttime.Ticks到endtime.Ticks的for循环,并按TimeSpan.TicksPerDay递增,然后创建一个新的日期时间,将其添加到每个值的列表中。下面的示例不包括结束日期,但您可以轻松地修复它 var start=
谢谢从datetimes和datetime创建一个新日期,以确保它们位于一天的开始。然后运行从starttime.Ticks到endtime.Ticks的for循环,并按TimeSpan.TicksPerDay递增,然后创建一个新的日期时间,将其添加到每个值的列表中。下面的示例不包括结束日期,但您可以轻松地修复它
var start= new DateTime(2009,01,01).Ticks;
var end= new DateTime(2009,01,10).Ticks;
List<DateTime> dates = new List<DateTime>();
for (var i = start; i < end; i+=TimeSpan.TicksPerDay) {
dates.Add(new DateTime(i));
}
var start=newdatetime(2009,01,01);
var end=新的日期时间(2009,01,10);
列表日期=新列表();
对于(变量i=开始;i<结束;i+=TimeSpan.TicksPerDay){
添加(新的日期时间(i));
}
或者可以在它们之间循环调用AddDays方法 从datetimes和datetime创建一个新日期,以确保它们都在一天的开始。然后运行从starttime.Ticks到endtime.Ticks的for循环,并按TimeSpan.TicksPerDay递增,然后创建一个新的日期时间,将其添加到每个值的列表中。下面的示例不包括结束日期,但您可以轻松地修复它
var start= new DateTime(2009,01,01).Ticks;
var end= new DateTime(2009,01,10).Ticks;
List<DateTime> dates = new List<DateTime>();
for (var i = start; i < end; i+=TimeSpan.TicksPerDay) {
dates.Add(new DateTime(i));
}
var start=newdatetime(2009,01,01);
var end=新的日期时间(2009,01,10);
列表日期=新列表();
对于(变量i=开始;i<结束;i+=TimeSpan.TicksPerDay){
添加(新的日期时间(i));
}
或者可以在它们之间循环调用AddDays方法 下面是一段代码片段,用于获取开始日期和结束日期之间的所有日期(包括开始日期和结束日期):
DateTime today = new DateTime(2011, 8, 29);
DateTime nextWeek = new DateTime(2011, 9, 4);
TimeSpan difference = nextWeek - today;
List<DateTime> days = new List<DateTime>();
for (int i = 0; i <= difference.Days; i++)
{
days.Add(today.AddDays(i));
}
foreach (var dateTime in days)
{
Console.WriteLine(dateTime);
}
Console.ReadLine();
以下是一段代码片段,用于获取开始日期和结束日期之间的所有日期(包括开始日期和结束日期):
DateTime today = new DateTime(2011, 8, 29);
DateTime nextWeek = new DateTime(2011, 9, 4);
TimeSpan difference = nextWeek - today;
List<DateTime> days = new List<DateTime>();
for (int i = 0; i <= difference.Days; i++)
{
days.Add(today.AddDays(i));
}
foreach (var dateTime in days)
{
Console.WriteLine(dateTime);
}
Console.ReadLine();
为了利用DaveCourter,如果需要在应用程序中为DateTime对象执行此操作,您可能需要为DateTime对象定义一个扩展方法
void Main()
{
DateTime today = new DateTime(2011, 8, 29);
DateTime nextWeek = new DateTime(2011, 9, 4);
foreach (DateTime dateTime in today.ListAllDates(nextWeek))
{
Console.WriteLine(dateTime);
}
Console.ReadLine();
}
public static class DateTimeExtenions
{
public static IEnumerable<DateTime> ListAllDates(this DateTime lhs, DateTime futureDate)
{
List<DateTime> dateRange = new List<DateTime>();
TimeSpan difference = (futureDate - lhs);
for(int i = 0; i <= difference.Days; i++)
{
dateRange.Add(lhs.AddDays(i));
}
return dateRange;
}
}
void Main()
{
DateTime today=新的日期时间(2011,8,29);
DateTime nextWeek=新的日期时间(2011,9,4);
foreach(今天的DateTime DateTime.listaldates(nextWeek))
{
Console.WriteLine(日期时间);
}
Console.ReadLine();
}
公共静态类DateTimeExtensions
{
公共静态IEnumerable ListalDates(此DateTime lhs、DateTime futureDate)
{
列表日期范围=新列表();
时间跨度差=(futureDate-lhs);
对于(int i=0;i以借助DaveCourter,如果您需要在整个应用程序中为DateTime对象执行此操作,您可能需要为DateTime对象定义一个扩展方法
void Main()
{
DateTime today = new DateTime(2011, 8, 29);
DateTime nextWeek = new DateTime(2011, 9, 4);
foreach (DateTime dateTime in today.ListAllDates(nextWeek))
{
Console.WriteLine(dateTime);
}
Console.ReadLine();
}
public static class DateTimeExtenions
{
public static IEnumerable<DateTime> ListAllDates(this DateTime lhs, DateTime futureDate)
{
List<DateTime> dateRange = new List<DateTime>();
TimeSpan difference = (futureDate - lhs);
for(int i = 0; i <= difference.Days; i++)
{
dateRange.Add(lhs.AddDays(i));
}
return dateRange;
}
}
void Main()
{
DateTime today=新的日期时间(2011,8,29);
DateTime nextWeek=新的日期时间(2011,9,4);
foreach(今天的DateTime DateTime.listaldates(nextWeek))
{
Console.WriteLine(日期时间);
}
Console.ReadLine();
}
公共静态类DateTimeExtensions
{
公共静态IEnumerable ListalDates(此DateTime lhs、DateTime futureDate)
{
列表日期范围=新列表();
时间跨度差=(futureDate-lhs);
对于(int i=0;我在这里回答得很好:这里回答得很好:很好!因为您返回了IEnumerable
,所以我建议将其设置为迭代器
方法,只需返回lhs.AddDays(i);
。这样,您根本不需要dateRange
,并且结果的评估是惰性的。(当您不需要遍历整个范围时可能很有用。)很好的一个!因为您返回了一个IEnumerable
,所以我建议将它变成一个迭代器方法,只需返回lhs.AddDays(I);
。这样,您根本不需要dateRange
,并且结果会被惰性地评估。(在不需要遍历整个范围时可能很有用。)