Я использую библиотеку под названием Json.NET, которая использует следующий код внутри разобрать строку JSON в DateTime:DateTime.TryParse не может разобрать DateTime.MinValue
if (DateTime.TryParse(s, Culture, DateTimeStyles.RoundtripKind, out dt))
{
dt = DateTimeUtils.EnsureDateTime(dt, DateTimeZoneHandling);
SetToken(JsonToken.Date, dt);
return dt;
}
Я думал Json.NET был завинчивания но похоже, что это DateTime.TryParse сам по себе, что искажает значение.
Когда я анализирую следующий действительную дату Iso (что соответствует UTC DateTime.MinValue):
string json = "0001-01-01T00:00:00+00:00";
DateTime dt;
DateTime.TryParse(json, invariantCulture, DateTimeStyles.RoundtripKind, out dt);
Результат является локализованной DateTime: {0001-01-01 8:00:00 PM}
, что при преобразовании обратно в У дает {0001-01-02 0:00:00 PM}
. По сути, дата не заполнена, и это именно та проблема, которую вы бы ожидали от DateTimeStyles.RoundtripKind.
Как избежать этого сценария?
Код, который я включил, относится к популярной библиотеке под названием 'Json.NET'. Если их использование 'DateTimeStyles.RoundtripKind' действительно неверно, я бы сказал, что это ошибка с их стороны. – Alain