 <p>You didn't provide example output or what it's used for but what I'd normally do is create a simple value object. We can also leverage Ruby's <code>Date</code> and <code>Range</code> objects to do most of the heavy lifting.</p> <pre class="lang-rb prettyprint-override"><code>require 'date' class DateRange def self.import dates dates.map do |d| self.new Date.parse(d[:start_date]), Date.parse(d[:end_date]) end end def initialize start, finish @range = Range.new start, finish end def month Date::MONTHNAMES[start.month] end def mon month[0..2] end def include? date @range.include? date end def start @range.begin end def finish @range.end end def to_s "#&lt;#{self.class.name} #{start.iso8601}..#{finish.iso8601}&gt;" end end </code></pre> <p>We use <code>start</code> and <code>finish</code> because <code>begin</code> and <code>end</code> are reserved words in Ruby, <code>Range</code> can use them because it is implemented in C. We could delegate to the Range object or use the Range object directly, but this value object lets us expose only the interface we want.</p> <p>I exposed the <code>include?</code> method which can be used to check if a given date is between the start and finish points, since that's the sort of thing people like to do with date ranges.</p> <p>Also, we use the <code>MONTHNAMES</code> constant defined on <code>Date</code> to give us the month name, or the short_month name, which is just the first 3 letters of the month, if you're into that.</p> <p>This code can be used as a starting point for any value object in a system, remove the stuff you don't need, add stuff you want.</p> <p>Additionally, I've included an <code>import</code> method on the class which will read in your <code>@dates</code> array and return a collection of <code>DateRange</code> objects.</p> <hr> <p><strong>References</strong></p> <ul> <li><a href="https://stackoverflow.com/questions/4844253/name-of-this-month-date-today-month-as-name">Name of this month (Date.today.month as name)</a></li> <li><a href="http://ruby-doc.org/core-2.2.0/Range.html" rel="nofollow">http://ruby-doc.org/core-2.2.0/Range.html</a></li> <li><a href="http://ruby-doc.org/stdlib-2.2.3/libdoc/date/rdoc/Date.html" rel="nofollow">http://ruby-doc.org/stdlib-2.2.3/libdoc/date/rdoc/Date.html</a></li> </ul>