What is causing this behavior, in our C# DateTime type?
<pre><code>[Test]
public void Sadness()
{
   var dateTime = DateTime.UtcNow;
   Assert.That(dateTime, Is.EqualTo(DateTime.Parse(dateTime.ToString())));
}
</code></pre>

<p>Failed :</p>

<pre><code> Expected: 2011-10-31 06:12:44.000
 But was:  2011-10-31 06:12:44.350
</code></pre>

<p>I wish to know what is happening behind the scenes in ToString() etc to cause this behavior.</p>

<p>EDIT After seeing Jon's Answer :</p>

<pre><code>[Test]
public void NewSadness()
{
    var dateTime = DateTime.UtcNow;
    Assert.That(dateTime, Is.EqualTo(DateTime.Parse(dateTime.ToString("o"))));
}
</code></pre>

<p>Result :</p>

<pre><code>Expected: 2011-10-31 12:03:04.161
But was:  2011-10-31 06:33:04.161
</code></pre>

<p>Same result with capital and small 'o' . I'm reading up the docs, but still unclear.</p>
