首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查2 OffsetDateTIme是否位于另一个OffsetDateTime中?

如何检查2 OffsetDateTIme是否位于另一个OffsetDateTime中?
EN

Stack Overflow用户
提问于 2017-09-29 09:03:22
回答 2查看 170关注 0票数 0

给定一个POCO事件{OffsetDateTime Start,OffsetDateTime End}和POCO试用程序{ OffsetDateTime Start,OffsetDateTime End}

试验通常会持续几个小时,几秒钟内就会发生。

如何测试一个事件是否发生在审判过程中?

之前出现的简单代码使用: event.Start > trial.Start & event.Start < trial.End

但转换为NodaTime,这些比较不再有效。

我怀疑,考虑到事件和试用都来自第三方库,我不得不对如何将其转换为即时和间隔做出一些假设,这可能是使用有时间限制的类型,或者使用即时类型,而不是使用OffsetDateTimes。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-09-29 13:43:26

注:本答案旨在“审判完全包含事件”-关于“审判重叠事件”,见马特约翰逊的答案。

OffsetDateTime.ToInstant是明确的,所以您当然可以将其转换为Instant值。不过,您可能希望从试用中创建一个间隔:

代码语言:javascript
复制
Interval trial = new Interval(trial.Start.ToInstant(), trial.End.ToInstant());

if (trial.Contains(event.Start.ToInstant()) &&
    trial.Contains(event.End.ToInstant()))
{
    ...
}

其中一个潜在的问题是间隔的终点是排他的.因此,如果event.Endtrial.End是相同的瞬间,那么上面的内容将不会进入if语句体。

票数 1
EN

Stack Overflow用户

发布于 2017-09-29 21:43:17

我可能错了,但你似乎想知道trialevent是否重叠。假设您的范围是半开放间隔(包括开始,独占结束),那么您将测试以下内容的重叠:

代码语言:javascript
复制
if (trial.Start.ToInstant() < event.End.ToInstant() &&
    trial.End.ToInstant() > event.Start.ToInstant())
{
    ...
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46485420

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档