Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 正在搜索一个方法,以确定一段时间是否介于2个日期时间之间_C#_Winforms_Datetime_Duration_Timespan - Fatal编程技术网

C# 正在搜索一个方法,以确定一段时间是否介于2个日期时间之间

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

我正在寻找一种方法来确定一段时间是否介于两个日期时间之间。例如,在一个列表中,我在一个对象中有一段时间(开始和结束)。像

开始时间:下午16:00,结束时间:下午17:00

我有一个表单,允许用户在现有列表中添加一段时间。例如,用户可以在表单中输入以下内容:

开始时间:下午16:30,结束时间:下午17:40

如果用户输入的时间段不存在,如何检查列表中的每个对象

在本例中,用户输入16:30介于16:00和17:00之间,这是不允许的。我该怎么做

请务必让我知道问题需要更多解释。

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&&firstStartsecondStart&&firstEnd