- tod Project Page:GitHub - jackc/tod: Time of day and shift types for Ruby
Supplies TimeOfDay class that includes parsing, strftime, comparison,
and
arithmetic.
Installation
gem install tod
Examples
Loading Tod
require 'tod'
Creating from hour, minute, and second
TimeOfDay.new 8 # => 08:00:00
TimeOfDay.new 8, 15, 30 # => 08:15:30
Parsing text
Strings only need to contain an hour. Minutes, seconds, AM or PM, and
colons
are all optional.
TimeOfDay.parse "8" # => 08:00:00
TimeOfDay.parse "8am" # => 08:00:00
TimeOfDay.parse "8pm" # => 20:00:00
TimeOfDay.parse "8p" # => 20:00:00
TimeOfDay.parse "9:30" # => 09:30:00
TimeOfDay.parse "15:30" # => 15:30:00
TimeOfDay.parse "3:30pm" # => 15:30:00
TimeOfDay.parse "1230" # => 12:30:00
TimeOfDay.parse "3:25:58" # => 03:25:58
TimeOfDay.parse "515p" # => 17:15:00
TimeOfDay.parse "151253" # => 15:12:53
Adding or subtracting time
Seconds can be added to or subtracted TimeOfDay objects. Time correctly
wraps
around midnight.
TimeOfDay.new(8) + 3600 # => 09:00:00
TimeOfDay.new(8) - 3600 # => 07:00:00
TimeOfDay.new(0) - 30 # => 23:59:30
TimeOfDay.new(23,59,45) + 30 # => 00:00:15
Comparing
TimeOfDay includes Comparable.
TimeOfDay.new(8)< TimeOfDay.new(9) # => true
TimeOfDay.new(8) == TimeOfDay.new(9) # => false
TimeOfDay.new(9) == TimeOfDay.new(9) # => true
TimeOfDay.new(10)> TimeOfDay.new(9) # => true
Formatting
Format strings are passed to Time#strftime.
TimeOfDay.new(8,30).strftime("%H:%M") # => "08:30"
TimeOfDay.new(17,15).strftime("%I:%M %p") # => "05:15 PM"
TimeOfDay.new(22,5,15).strftime("%I:%M:%S %p") # => "10:05:15 PM"
Convenience methods for dates and times
Tod adds Date#on and Time#to_time_of_day. If you do not want the core
extensions
then require ‘tod/time_of_day’ instead of ‘tod’.
tod = TimeOfDay.new 8, 30 # => 08:30:00
tod.on Date.today # => 2010-12-29
08:30:00 -0600
Date.today.at tod # => 2010-12-29
08:30:00 -0600
Time.now.to_time_of_day # => 16:30:43