Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.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
Ruby on rails 减去两个时间范围_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 减去两个时间范围

Ruby on rails 减去两个时间范围,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有两个时间范围 Fri, 02 Aug 2019 10:09:58 UTC +00:00..Fri, 02 Aug 2019 23:59:59 UTC +00:00 Fri, 02 Aug 2019 11:09:58 UTC +00:00..Fri, 02 Aug 2019 12:09:58 UTC +00:00 从第一个减去第二个的最简单方法是什么 [ Fri, 02 Aug 2019 10:09:58 UTC +00:00..Fri, 02 Aug 2019 11:09:58 UT

我有两个时间范围

Fri, 02 Aug 2019 10:09:58 UTC +00:00..Fri, 02 Aug 2019 23:59:59 UTC +00:00
Fri, 02 Aug 2019 11:09:58 UTC +00:00..Fri, 02 Aug 2019 12:09:58 UTC +00:00
从第一个减去第二个的最简单方法是什么

[
   Fri, 02 Aug 2019 10:09:58 UTC +00:00..Fri, 02 Aug 2019 11:09:58 UTC +00:00,     
   Fri, 02 Aug 2019 12:09:58 UTC +00:00..Fri, 02 Aug 2019 23:59:59 UTC +00:00
]

我会这样做:

range_1 = (Time.parse('2019-08-02 10:09:58 UTC') .. Time.parse('2019-08-02 23:59:59 UTC'))
range_2 = (Time.parse('2019-08-02 11:09:58 UTC') .. Time.parse('2019-08-02 12:09:58 UTC'))

[(range_1.begin..range_2.begin), (range_2.end..range_1.end)]
#=> [2019-08-02 10:09:58 UTC..2019-08-02 11:09:58 UTC, 2019-08-02 12:09:58 UTC..2019-08-02 23:59:59 UTC]

是否保证第二个范围始终包含在第一个范围内?第二个总是把第一个切成两部分吗?或者,范围是否可能只相交或根本不重叠?如果是这样,如何处理这种情况?是的,它总是包括在内。如果你通过编辑你的问题来回答@spickerman的评论,说明第二个范围完全属于第一个范围,你将赢得至少一张赞成票。
[(范围1.开始..范围2.开始),(范围2.结束..范围1.结束)]
你更快了;)