title: Is there a full implementation for ISO-8601 date parsing for Ruby?
body: <p>The <code>Time.iso8601</code> method is a restricted subset of ISO-8601. </p>
  
  <ul>
  <li>What are its limitations?</li>
  <li>Does anyone know of a full implementation for Ruby? I'm using MRI 1.8.7.</li>
  </ul>
  
  <h3>Update</h3>
  
  <p>It looks like there isn't a single class that handles all of the various 8601 date and date/time combinations. However, I have managed to work around the problems by using both the <code>Date.parse</code> and <code>Time.iso8601</code> methods. The downside is that you need to decide in code whether the input looks like a date or a date/time.</p>
  
  <h3>Warning : Timezone differences</h3>
  
  <p><code>Time.iso8601</code> and <code>Time.parse</code> behave differently. </p>
  
  <pre><code>&gt;&gt; Time.parse("2010-09-06T12:27:00.10-05:00")
  =&gt; Mon Sep 06 18:27:00 +0100 2010
  
  &gt;&gt; Time.iso8601("2010-09-06T12:27:00.10-05:00")
  =&gt; Mon Sep 06 17:27:00 UTC 2010
  </code></pre>
  
  <h3>Differences between Time.iso8601 and ISO-8601</h3>
  
  <p><a href="http://www.w3.org/TR/NOTE-datetime" rel="noreferrer">This document</a> touches on the differences between what is in ISO-8601 and what is supported by Ruby. The short answer is that the number of possible formats is restricted.</p>