我目前正在处理许多可能无限期的日期跨度,即
StartDate EndDate
--------- ---------
01JAN1921 31DEC2009
10OCT1955 null
...
其中间隔的另一端可能未知或未定义。我一直在研究用于检测重叠的小函数,一个区间是否是另一个区间,计算两个区间之间的间隙等。
例如,为了检测重叠,问题是
S E S and E are the start and end of the interval
| | we're comparing to. Here both are known, but
s1------+---e1 | either could be null. The small s:s and e:s
| | s2....e2 define the intervals we're comparing to and
|s3--e3 | again we'd like to allow for open intervals.
| s4--+----e4
s5..e5| |
s6--+-------+--s7
| |
基于与检测到明确间隔的重叠相关的问题,您需要检查
Coalesce(S,Coalesce(e-1,0))<Coalesce(e,Coalesce(S+1,1))
AND Coalesce(E,Coalesce(s+1,0))>Coalesce(s,Coalesce(E-1,1))
我认为这是一个很常见的事情(不仅涉及日期或时间间隔),许多人一直在处理它。我正在寻找现有的实现,最好只是基于基本比较操作的函数。
答案 0 :(得分:2)
Interval arithmetic是一个广泛而复杂的话题。 C ++ / Boost有一个library来处理它。 Python也是,我想其他许多语言。这是你要问的问题,还是这个太笼统了?
至于时间间隔,有SO question,可能还有其他人可以在“相关”侧栏中找到。
答案 1 :(得分:1)
人们通常在节目中代表日期的三种常见方式。
至于用作参考的实现,