Language agnostic 值间隔函数
我目前正在处理许多可能不确定的日期跨度,即Language agnostic 值间隔函数,language-agnostic,datetime,function,range,intervals,Language Agnostic,Datetime,Function,Range,Intervals,我目前正在处理许多可能不确定的日期跨度,即 StartDate EndDate --------- --------- 01JAN1921 31DEC2009 10OCT1955 null ... 区间的另一端可能未知或未定义。我一直在研究检测重叠的小函数,一个区间是否是另一个区间的子区间,计算两个区间之间的间距等等 例如,要检测重叠,问题是 S E S and E are the start and end o
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))
聚结(S,聚结(e-1,0))聚结(S,聚结(e-1,1))
我想这是一件非常普遍的事情(不仅涉及日期或时间间隔),很多人都在处理它。我正在寻找现有的实现,最好是基于基本比较操作的函数。是一个广泛而复杂的主题。C++/Boost有一个处理它的方法。我猜还有很多其他语言。这就是你要问的,还是太笼统了
至于时间间隔,有这个,你可能可以在“相关”侧栏中找到其他时间间隔。是一个广泛而复杂的主题。C++/Boost有一个处理它的方法。我猜还有很多其他语言。这就是你要问的,还是太笼统了
关于时间间隔,有这样一种方法,你可以在“相关”侧栏中找到其他方法。人们在程序中通常用三种方法表示日期
- 在公历中,有年、月、日、时、分、秒。它非常健壮,但很难用它来做数学运算(每四年闰年一次,但不是世纪闰年,除非年份是400的倍数……你还记得吗?)
- 作为自特定时间起的秒数,尽管这会产生问题,因为您必须选择是否计算闰秒(在线搜索“闰秒”,您将看到原因)
- 在儒略历法中,指自某一特定日期起的天数和自该日期开始后的秒数
- Java就是一个不应该做的例子(伙计们,不要创建可变的日期时间类型)
- Python也是一团糟(没有简单的方法来解析日期)
- PostgreSQL很好地处理日期和时间。请参阅,您还可以查看源代码。它在内部使用儒略历
- Haskell的标准时间库也很好,并且具有无限的范围和精度-没错,他们使用大整数表示朱利安日期,并使用大整数的比例表示时间。该库包括一系列有用的日期函数,其中一个用于计算复活节的日期。看
- 在公历中,有年、月、日、时、分、秒。它非常健壮,但很难用它来做数学运算(每四年闰年一次,但不是世纪闰年,除非年份是400的倍数……你还记得吗?)
- 作为自特定时间起的秒数,尽管这会产生问题,因为您必须选择是否计算闰秒(在线搜索“闰秒”,您将看到原因)
- 在儒略历法中,指自某一特定日期起的天数和自该日期开始后的秒数
- Java就是一个不应该做的例子(伙计们,不要创建可变的日期时间类型)
- Python也是一团糟(没有简单的方法来解析日期)
- PostgreSQL很好地处理日期和时间。请参阅,您还可以查看源代码。它在内部使用儒略历
- Haskell的标准时间库也很好,并且具有无限的范围和精度-没错,他们使用大整数表示朱利安日期,并使用大整数的比例表示时间。该库包括一系列有用的日期函数,其中一个用于计算复活节的日期。看