2552 {
2553 long ticks = result.parsedDate.Ticks;
2554 TimeZoneInfo local = TimeZoneInfo.Local;
2555 bool isAmbiguousLocalDst = false;
2556 if (ticks < 864000000000
L)
2557 {
2558 ticks -= result.timeZoneOffset.Ticks;
2560 if (ticks < 0)
2561 {
2562 ticks += 864000000000
L;
2563 }
2564 }
2565 else
2566 {
2567 ticks -= result.timeZoneOffset.Ticks;
2568 if (ticks < 0 || ticks > 3155378975999999999
L)
2569 {
2570 ticks += local.GetUtcOffset(result.parsedDate,
TimeZoneInfoOptions.NoThrowOnInvalidTime).Ticks;
2571 }
2572 else
2573 {
2575 ticks += TimeZoneInfo.GetUtcOffsetFromUtc(time, TimeZoneInfo.Local, out var _, out isAmbiguousLocalDst).Ticks;
2576 }
2577 }
2578 if (ticks < 0 || ticks > 3155378975999999999
L)
2579 {
2580 result.parsedDate =
DateTime.MinValue;
2581 result.SetFailure(ParseFailureKind.FormatWithOriginalDateTime, "Format_DateOutOfRange");
2582 return false;
2583 }
2585 return true;
2586 }