From: Rob Biedenharn Date: 2008-12-20T01:22:38+09:00 Subject: Re: could this one line Date extension to return the end of financial year date be any more compact? 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