From: Greg Hauptmann Date: 2008-12-20T05:58:03+09:00 Subject: Re: could this one line Date extension to return the end of financial year date be any more compact? ------=_Part_46211_6838364.1229720770889 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline thanks - I like the "this_year << 12" - didn't realize this was available for dates On Sat, Dec 20, 2008 at 2:22 AM, Rob Biedenharn wrote: > On Dec 19, 2008, at 2:26 AM, Greg Hauptmann wrote: > > could this be any more compact or ruby like that it is? >> >> class Date >> >> def *financial_year_end* >> Date.civil(year, 6, 30) < self ? Date.civil(year, 6, 30) : >> Date.civil(year - 1, 6, 30) >> end >> >> end >> > > > Well, you could avoid the multiple date creations and step the date back 12 > months when needed. > > class Date > def financial_year_end > if (this_year = Date.civil(year, 6, 30)) < self > this_year > else > this_year << 12 > end > end > end > > irb> jun15 = Date.civil(2008, 6, 15) > => # > irb> jul15 = Date.civil(2008, 7, 15) > => # > irb> puts jun15 > 2008-06-15 > => nil > irb> puts jul15 > 2008-07-15 > => nil > irb> puts jun15, jun15.financial_year_end > 2008-06-15 > 2007-06-30 > => nil > irb> puts jul15, jul15.financial_year_end > 2008-07-15 > 2008-06-30 > => nil > > The name seems odd to me as the expectation that *I* had was to ask a date > when the financial year that it is part of will end. However, it's your > method, so just document what you mean it to be. > > -Rob > > Rob Biedenharn http://agileconsultingllc.com > Rob@AgileConsultingLLC.com > > > ------=_Part_46211_6838364.1229720770889--