From 0c1da5f297d8f40500385a606f00a5f47e5b20c2 Mon Sep 17 00:00:00 2001 From: Aaron Campbell Date: Wed, 6 Jan 2021 03:53:35 -0500 Subject: [PATCH 1/4] add floor and ceil methods --- lib/tod/time_of_day.rb | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/lib/tod/time_of_day.rb b/lib/tod/time_of_day.rb index b99e554..f2fc676 100644 --- a/lib/tod/time_of_day.rb +++ b/lib/tod/time_of_day.rb @@ -70,10 +70,20 @@ def <=>(other) @second_of_day <=> other.second_of_day end + # Rounding down by number of seconds + def floor(sec = 1) + self - (self.to_i % round_sec) + end + + # Rounding up by number of seconds + def ceil(sec = 1) + floor(sec) + sec + end + # Rounding to the given nearest number of seconds def round(round_sec = 1) - down = self - (self.to_i % round_sec) - up = down + round_sec + down = floor(round_sec) + up = ceil(round_sec) difference_down = self - down difference_up = up - self From 5fd2df900d4e39d781ae2fe7fe391996153d42fe Mon Sep 17 00:00:00 2001 From: Aaron Campbell Date: Wed, 6 Jan 2021 03:58:21 -0500 Subject: [PATCH 2/4] document floor and ceiling --- README.markdown | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/README.markdown b/README.markdown index 629b3ba..6eb83a9 100644 --- a/README.markdown +++ b/README.markdown @@ -116,6 +116,24 @@ Round to the given nearest number of seconds. Tod::TimeOfDay.new(8,15,31).round(5) # => "08:15:30" Tod::TimeOfDay.new(8,15,34).round(60) # => "08:16:00" Tod::TimeOfDay.new(8,02,29).round(300) # => "08:00:00" + +Floor +---------- + +Round down by given seconds + + Tod::TimeOfDay.new(8,15,31).floor(5) # => "08:15:30" + Tod::TimeOfDay.new(8,15,34).floor(60) # => "08:15:00" + Tod::TimeOfDay.new(8,02,29).floor(300) # => "08:00:00" + +Ceiling +---------- + +Round down by given seconds + + Tod::TimeOfDay.new(8,15,31).ceil(5) # => "08:15:35" + Tod::TimeOfDay.new(8,15,34).ceil(60) # => "08:16:00" + Tod::TimeOfDay.new(8,02,29).ceil(300) # => "08:05:00" Convenience methods for dates and times --------------------------------------- From 7253170ad9ad321e1ff3d3c6a4fdccb1457a0804 Mon Sep 17 00:00:00 2001 From: Aaron Campbell Date: Wed, 6 Jan 2021 03:59:35 -0500 Subject: [PATCH 3/4] fix wording on floor & ceiling --- README.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.markdown b/README.markdown index 6eb83a9..fffedc8 100644 --- a/README.markdown +++ b/README.markdown @@ -120,7 +120,7 @@ Round to the given nearest number of seconds. Floor ---------- -Round down by given seconds +Round down by given number of seconds Tod::TimeOfDay.new(8,15,31).floor(5) # => "08:15:30" Tod::TimeOfDay.new(8,15,34).floor(60) # => "08:15:00" @@ -129,7 +129,7 @@ Round down by given seconds Ceiling ---------- -Round down by given seconds +Round up by given number of seconds Tod::TimeOfDay.new(8,15,31).ceil(5) # => "08:15:35" Tod::TimeOfDay.new(8,15,34).ceil(60) # => "08:16:00" From 352e033e92ef58a3b3a1de5d72006e93c0c00374 Mon Sep 17 00:00:00 2001 From: Aaron Campbell Date: Wed, 6 Jan 2021 04:01:40 -0500 Subject: [PATCH 4/4] add missing punctuation --- README.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.markdown b/README.markdown index fffedc8..f6a0ba4 100644 --- a/README.markdown +++ b/README.markdown @@ -120,7 +120,7 @@ Round to the given nearest number of seconds. Floor ---------- -Round down by given number of seconds +Round down by given number of seconds. Tod::TimeOfDay.new(8,15,31).floor(5) # => "08:15:30" Tod::TimeOfDay.new(8,15,34).floor(60) # => "08:15:00" @@ -129,7 +129,7 @@ Round down by given number of seconds Ceiling ---------- -Round up by given number of seconds +Round up by given number of seconds. Tod::TimeOfDay.new(8,15,31).ceil(5) # => "08:15:35" Tod::TimeOfDay.new(8,15,34).ceil(60) # => "08:16:00"