title: DateTime.TryParse cannot parse DateTime.MinValue
body: <p>I'm using a library called Json.NET that uses the following code internally to parse a JSON string into a DateTime:</p>
  
  <pre><code>if (DateTime.TryParse(s, Culture, DateTimeStyles.RoundtripKind, out dt))
  {
       dt = DateTimeUtils.EnsureDateTime(dt, DateTimeZoneHandling);
       SetToken(JsonToken.Date, dt);
       return dt;
  }
  </code></pre>
  
  <p>I thought Json.NET was screwing up the conversion, but it looks like it's DateTime.TryParse itself that's botching the value.</p>
  
  <p>When I parse the following valid Iso date (which corresponds to UTC DateTime.MinValue):</p>
  
  <pre><code>string json = "0001-01-01T00:00:00+00:00";
  DateTime dt;
  DateTime.TryParse(json, invariantCulture, DateTimeStyles.RoundtripKind, out dt);
  </code></pre>
  
  <p>The result is a localized DateTime: <code>{0001-01-01 8:00:00 PM}</code>, which when converted back to Utc time gives <code>{0001-01-02 0:00:00 PM}</code>. Essentially, the date underflowed, which is exactly the kind of problem you would expect DateTimeStyles.RoundtripKind to avoid.</p>
  
  <p>How do I avoid this scenario?</p>