Gem for finding ranges in Retail or the 4-5-4 Calendar format
Reference Calendars:
Add this line to your application's Gemfile:
gem 'retail_calendar'
And then execute:
$ bundle
Or install it yourself as:
$ gem install retail_calendar
Instantiate RetailCalendar::Finder object to get start and end dates for weeks/periods(months)/quarters/seasons/years
> cal = RetailCalendar::Finder.new
=> #<RetailCalendar::Finder:0x00000102125a40 @offset="+0000">
Instantiate with time zone
> cal = RetailCalendar::Finder.new('PST')
=> #<RetailCalendar::Finder:0x000001021a3328 @offset="PST">
> res = cal.week(2014, 1, 1)
=> #<Dish::Plate:0x0000010214e6c0
@_original_hash=
{"start_date"=>Sun, 02 Feb 2014 00:00:00 +0000,
"end_date"=>Sat, 08 Feb 2014 00:00:00 +0000}>
> res.start_date
=> Sun, 02 Feb 2014 00:00:00 +0000
> res.end_date
=> Sat, 08 Feb 2014 00:00:00 +0000
> res = cal.period(2014, 1)
=> #<Dish::Plate:0x000001014bd7a8
@_original_hash=
{"start_date"=>Sun, 02 Feb 2014 00:00:00 +0000,
"end_date"=>Sat, 01 Mar 2014 00:00:00 +0000}>
> res = cal.quarter(2014, 1)
=> #<Dish::Plate:0x0000010153e628
@_original_hash=
{"start_date"=>Sun, 02 Feb 2014 00:00:00 +0000,
"end_date"=>Sat, 03 May 2014 00:00:00 +0000}>
> res = cal.season(2014, 1)
=> #<Dish::Plate:0x0000010188eee0
@_original_hash=
{"start_date"=>Sun, 02 Feb 2014 00:00:00 +0000,
"end_date"=>Sat, 02 Aug 2014 00:00:00 +0000}>
> res = cal.year(2014)
=> #<Dish::Plate:0x000001019100a8
@_original_hash=
{"start_date"=>Sun, 02 Feb 2014 00:00:00 +0000,
"end_date"=>Sat, 31 Jan 2015 00:00:00 +0000}>
> res = cal.this_week
=> #<Dish::Plate:0x000001024bc230
@_original_hash=
{"start_date"=>Sun, 01 Jun 2014 00:00:00 +0000,
"end_date"=>Sat, 07 Jun 2014 00:00:00 +0000}>
> res = cal.this_period
=> #<Dish::Plate:0x000001011b0678
@_original_hash=
{"start_date"=>Sun, 01 Jun 2014 00:00:00 +0000,
"end_date"=>Sat, 05 Jul 2014 00:00:00 +0000}>
> res = cal.this_quarter
=> #<Dish::Plate:0x000001012a3b20
@_original_hash=
{"start_date"=>Sun, 04 May 2014 00:00:00 +0000,
"end_date"=>Sat, 02 Aug 2014 00:00:00 +0000}>
> res = cal.this_season
=> #<Dish::Plate:0x00000101313790
@_original_hash=
{"start_date"=>Sun, 02 Feb 2014 00:00:00 +0000,
"end_date"=>Sat, 02 Aug 2014 00:00:00 +0000}>
> res = cal.this_year
=> #<Dish::Plate:0x00000101378c30
@_original_hash=
{"start_date"=>Sun, 02 Feb 2014 00:00:00 +0000,
"end_date"=>Sat, 31 Jan 2015 00:00:00 +0000}>
> res = cal.last_week
=> #<Dish::Plate:0x000001013ebdc0
@_original_hash=
{"start_date"=>Sun, 25 May 2014 00:00:00 +0000,
"end_date"=>Sat, 31 May 2014 00:00:00 +0000}>
> res = cal.last_period
=> #<Dish::Plate:0x0000010142a020
@_original_hash=
{"start_date"=>Sun, 04 May 2014 00:00:00 +0000,
"end_date"=>Sat, 31 May 2014 00:00:00 +0000}>
> res = cal.last_quarter
=> #<Dish::Plate:0x00000101483440
@_original_hash=
{"start_date"=>Sun, 02 Feb 2014 00:00:00 +0000,
"end_date"=>Sat, 03 May 2014 00:00:00 +0000}>
> res = cal.last_season
=> #<Dish::Plate:0x000001014db3c0
@_original_hash=
{"start_date"=>Sun, 04 Aug 2013 00:00:00 +0000,
"end_date"=>Sat, 01 Feb 2014 00:00:00 +0000}>
> res = cal.last_year
=> #<Dish::Plate:0x00000101529a20
@_original_hash=
{"start_date"=>Sun, 03 Feb 2013 00:00:00 +0000,
"end_date"=>Sat, 01 Feb 2014 00:00:00 +0000}>
> res = cal.get_from_date(Time.now)
=> #<Dish::Plate:0x000001013b2a70
@_original_hash={"period"=>5, "quarter"=>2, "season"=>1}>
Handles Retail Leap years
> res = cal.year(2006)
=> #<Dish::Plate:0x00000101979558
@_original_hash=
{"start_date"=>Sun, 29 Jan 2006 00:00:00 +0000,
"end_date"=>Sat, 03 Feb 2007 00:00:00 +0000}>
- Fork it ( http://github.com/kitwalker12/retail_calendar/fork )
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request