could this one line Date extension to return the end of financialyear date be any more compact?

G

Greg Hauptmann

[Note: parts of this message were removed to make it a legal post.]

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
 
R

Rob Biedenharn

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)
=> #<Date: 4909265/2,0,2299161>
irb> jul15 = Date.civil(2008, 7, 15)
=> #<Date: 4909325/2,0,2299161>
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
(e-mail address removed)
 
G

Greg Hauptmann

[Note: parts of this message were removed to make it a legal post.]

thanks - I like the "this_year << 12" - didn't realize this was available
for dates
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,744
Messages
2,569,483
Members
44,903
Latest member
orderPeak8CBDGummies

Latest Threads

Top