C# 正在搜索一个方法,以确定一段时间是否介于2个日期时间之间
我正在寻找一种方法来确定一段时间是否介于两个日期时间之间。例如,在一个列表中,我在一个对象中有一段时间(开始和结束)。像 开始时间:下午16:00,结束时间:下午17:00 我有一个表单,允许用户在现有列表中添加一段时间。例如,用户可以在表单中输入以下内容: 开始时间:下午16:30,结束时间:下午17:40 如果用户输入的时间段不存在,如何检查列表中的每个对象 在本例中,用户输入16:30介于16:00和17:00之间,这是不允许的。我该怎么做 请务必让我知道问题需要更多解释。C# 正在搜索一个方法,以确定一段时间是否介于2个日期时间之间,c#,winforms,datetime,duration,timespan,C#,Winforms,Datetime,Duration,Timespan,我正在寻找一种方法来确定一段时间是否介于两个日期时间之间。例如,在一个列表中,我在一个对象中有一段时间(开始和结束)。像 开始时间:下午16:00,结束时间:下午17:00 我有一个表单,允许用户在现有列表中添加一段时间。例如,用户可以在表单中输入以下内容: 开始时间:下午16:30,结束时间:下午17:40 如果用户输入的时间段不存在,如何检查列表中的每个对象 在本例中,用户输入16:30介于16:00和17:00之间,这是不允许的。我该怎么做 请务必让我知道问题需要更多解释。bool在(Da
bool在(DateTime firstStart,DateTime firstEnd,DateTime secondStart,DateTime secondEnd){
bool IsWithin(DateTime firstStart, DateTime firstEnd, DateTime secondStart, DateTime secondEnd) {
long fs = firstStart.ToFileTime();
long fe = firstEnd.ToFiletime();
long ss = secondStart.ToFileTime();
long se = secondEnd.ToFileTime();
return fs > ss && fe < se;
}
long fs=firstStart.ToFileTime();
long fe=firstEnd.ToFiletime();
long ss=secondStart.ToFileTime();
long se=secondEnd.ToFileTime();
返回fs>ss&&fe
如果第一个期间在第二个期间内,此方法将获取四个日期并返回。然后,您只需检查此方法是否为所有对象返回falls。希望这对您有所帮助:)请查看:我不允许使用外部图书馆:(但是,如果我不理解这篇文章是错误的,那么这篇文章就不存在一种解决问题的方法。net@InvictusWarrior你不需要整个库,只需要两个简单的比较:
a.start
。至于我不允许使用外部库
没有“外部”你不能使用.NET库,句号。甚至系统库也以NuGet包的形式发布。每次编译项目时,它都会从NuGet恢复相当多的包。为什么要使用ToFileTime
而不是直接比较值?唯一能做的就是将勾号计数基数从0001-01-01
更改为1601-01-01
。给定h比较速度非常快,firstStart.ToFileTime()
单独使用比firsttStart>secondStart
更昂贵。DateTime在内部存储一个勾号计数,并比较勾号值。每次都不起作用,失败例如:First:09:00-10:00 Second:09:02-10:01您的方法说它不在这段时间内,但这是错误的:(@invicustwarrior这是因为你想知道两个范围是否重叠,而这个方法告诉你一个范围是否完全在另一个范围内。return(firstStart>secondStart&&firstStart