Chronic Between
A simple Ruby natural language parser for date and time ranges. (For example, Mon-Fri 09:00-16:30, etc.) Returns a boolean result.
Several date and time ranges can be supplied with matching patterns being separated by a comma.
Installation
$ sudo gem sources -a http://gemcutter.org
$ sudo gem install chronic_between
Usage
>> s = 'Mon-Fri 9:00-16:30, Saturday, Sunday'
>> c = ChronicBetween.new(s)
>> DateTime.now      
=> #<DateTime: 2011-03-26T16:54:40+00:00
>> c.within? DateTime.now
=> true
>> c.within? DateTime.parse("28-Mar-2011 14:33")
=> true
>> c.within? DateTime.parse("28-Mar-2011 08:33")
=> false
Examples of parse-able strings:
- 'Mon-Fri 9:00-16:30'
 - 'saturday'
 - '12:00-13:00'
 - 'Sat,Sun'
 - 'Mon-Fri 9:00-16:30, Saturday, Sunday'
 - 'Mon-Fri 9:00-16:30, Saturday, 10:15-10:45'
 - 'Sat 18:15-21:40'
 - 'Mon-Wed'
 - 'Mon-Fri 9:00 to 16:30'
 - '9:00-16:30 Mon-Fri'
 - '9:00 to 16:30 Mon-Fri'
 - '3:45 to 5:15'
 - 'Mon 3:45 to 5:15'
 - '3:45-5:15 Mon'
 - '3:45 to 5:15 Mon'
 - 'after 6pm'
 - 'before 9pm'
 - 'April 2nd - April 5th 12:00-14:00'
 - 'April 5th - April 9th'
 - 'April 5th'
 - 'not before 6pm'
 - 'except after 6pm'
 - 'Sunday, after 6pm'
 - 'Saturday, not after 6pm'