Ruby is a langauge that had many hidden gems, one such is using the <<
shift operator on Date
objects!
Consider the following scenarii:
1
2
3
4
5
6
7
8
9
10
11
12
13
| require 'date'
today = Date.today
# => #<Date: 2014-09-14 ((2456915j,0s,0n),+0s,2299161j)>
today.strftime('%A')
# => "Sunday"
today.strftime('%B')
# => "September"
today.strftime('%Y')
# => 2014
|
Now let's do the shifting:
1
2
3
4
5
6
7
8
9
10
11
| last_month = today << 1
# => #<Date: 2014-08-14 ((2456884j,0s,0n),+0s,2299161j)>
last_month.strftime('%A')
# => "Thursday"
last_month.strftime('%B')
# => "August"
last_month.strftime('%Y')
# => "2014"
|
1
2
3
4
5
| next_month = today >> 2
# => #<Date: 2014-11-14 ((2456976j,0s,0n),+0s,2299161j)>
next_month.strftime('%A-%B-%Y')
# => "Friday-November-2014"
|
We could also shift on the new date:
1
2
| Date.new(1988, 02, 01) >> 1
# => #<Date: 1988-03-01 ((2447222j,0s,0n),+0s,2299161j)>
|
That's all for now, happy hacking! :)