C# 分割日期时间范围的有效方法
我有两个日期时间,X和Y。其中X总是出现在Y之前。它们之间可能相差几毫秒到几年。我怎样才能在约会结束时(00:00)有效地将他们分开C# 分割日期时间范围的有效方法,c#,date,datetime,timestamp,date-range,C#,Date,Datetime,Timestamp,Date Range,我有两个日期时间,X和Y。其中X总是出现在Y之前。它们之间可能相差几毫秒到几年。我怎样才能在约会结束时(00:00)有效地将他们分开 这里有一个方法可以完成您想要的分区。注意:没有检查以确保初始的start在end之前 public IEnumerable<(DateTime Start, DateTime End)> DaySplit(DateTime start, DateTime end) { var partition = start.AddDays(1).Date;
这里有一个方法可以完成您想要的分区。注意:没有检查以确保初始的
start
在end
之前
public IEnumerable<(DateTime Start, DateTime End)> DaySplit(DateTime start, DateTime end)
{
var partition = start.AddDays(1).Date;
while(partition < end)
{
yield return (start, partition);
start = partition;
partition = start.AddDays(1);
}
yield return (start, end);
}
public IEnumerable dayspilt(日期时间开始,日期时间结束)
{
var partition=start.AddDays(1.Date);
while(分区<结束)
{
收益率回报(开始、分割);
开始=分区;
分区=开始。添加天数(1);
}
收益率回报(开始、结束);
}
请注意,这将延迟创建范围,因此您必须在
foreach
循环中或通过调用ToList
或ToArray
来迭代它以获取值。此外,它还使用C#7中的值元组。您可以改为使用Tuple
或自定义类型。这里有一个方法可以完成您想要的分区。注意:没有检查以确保初始的start
在end
之前
public IEnumerable<(DateTime Start, DateTime End)> DaySplit(DateTime start, DateTime end)
{
var partition = start.AddDays(1).Date;
while(partition < end)
{
yield return (start, partition);
start = partition;
partition = start.AddDays(1);
}
yield return (start, end);
}
public IEnumerable dayspilt(日期时间开始,日期时间结束)
{
var partition=start.AddDays(1.Date);
while(分区<结束)
{
收益率回报(开始、分割);
开始=分区;
分区=开始。添加天数(1);
}
收益率回报(开始、结束);
}
请注意,这将延迟创建范围,因此您必须在
foreach
循环中或通过调用ToList
或ToArray
来迭代它以获取值。此外,它还使用C#7中的值元组。您可以改为使用元组
或自定义类型。取开始日期,添加一天,截断时间。如果在结束日期之前,那么您有一个分区。继续这样做,直到日期在结束之后。取开始日期,加上一天,截短时间。如果在结束日期之前,那么您有一个分区。继续这样做,直到日期在结束之后。