System.DateTimeParse.AdjustTimeZoneToLocal C# (CSharp) Méthode

AdjustTimeZoneToLocal() private static méthode

private static AdjustTimeZoneToLocal ( DateTimeResult &result, bool bTimeOnly ) : System.Boolean
result DateTimeResult
bTimeOnly bool
Résultat System.Boolean
        private static Boolean AdjustTimeZoneToLocal(ref DateTimeResult result, bool bTimeOnly) {
            long resultTicks = result.parsedDate.Ticks;
            // Convert to local ticks
            CurrentSystemTimeZone tz = (CurrentSystemTimeZone)TimeZone.CurrentTimeZone;
            Boolean isAmbiguousLocalDst = false;
            if (resultTicks < Calendar.TicksPerDay) {
                //
                // This is time of day.
                //

                // Adjust timezone.
                resultTicks -= result.timeZoneOffset.Ticks;
                // If the time is time of day, use the current timezone offset.
                resultTicks += tz.GetUtcOffset(bTimeOnly ? DateTime.Now: result.parsedDate).Ticks;

                if (resultTicks < 0) {
                    resultTicks += Calendar.TicksPerDay;
                }
            } else {
                // Adjust timezone to GMT.
                resultTicks -= result.timeZoneOffset.Ticks;
                if (resultTicks < DateTime.MinTicks || resultTicks > DateTime.MaxTicks) {
                    // If the result ticks is greater than DateTime.MaxValue, we can not create a DateTime from this ticks.
                    // In this case, keep using the old code.
                    resultTicks += tz.GetUtcOffset(result.parsedDate).Ticks;
                } else {
                    // Convert the GMT time to local time.
                    resultTicks += tz.GetUtcOffsetFromUniversalTime(new DateTime(resultTicks), ref isAmbiguousLocalDst);
                }
            }
            if (resultTicks < DateTime.MinTicks || resultTicks > DateTime.MaxTicks) {
                result.parsedDate = DateTime.MinValue;
                result.SetFailure(ParseFailureKind.Format, "Format_DateOutOfRange", null);
                return false;
            }
            result.parsedDate = new DateTime(resultTicks, DateTimeKind.Local, isAmbiguousLocalDst);
            return true;
        }