Если вы находитесь в GMT + 8, то местное время DateTime.MinValue
соответствует UTC времени раньше, чем DateTime.MinValue
, отсюда исключение. Из документации, на которую вы ссылались:
Если значением свойства DateTime.Kind является DateTimeKind.Local или DateTimeKind.Unspecified, дата и время объекта DateTimeOffset устанавливаются равными dateTime, а его свойство Offset устанавливается равным смещению текущего значения локальной системы. часовой пояс.
Логично, что у вас будет DateTime
, равный MinValue
, с Offset
, равным 8 часам, но это означает, что дата / время в формате UTC, полученные в результате применения смещения, раньше, чем может быть представлена.
(Не забывайте, что вы добавляете смещение к UTC, чтобы получить местное время, или вычитаете из местного времени, чтобы получить UTC. В Noda Time мы применяем это, используя типы для каждого из Offset
, LocalInstant
и Instant
, и разрешаем вам только выполнять соответствующую операцию ...)