Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ DetermineTimeZoneAdjustments()

static bool System.DateTimeParse.DetermineTimeZoneAdjustments ( ref DateTimeResult result,
DateTimeStyles styles,
bool bTimeOnly )
inlinestaticprivate

Definition at line 2444 of file DateTimeParse.cs.

2445 {
2446 if ((result.flags & ParseFlags.CaptureOffset) != 0)
2447 {
2448 return DateTimeOffsetTimeZonePostProcessing(ref result, styles);
2449 }
2450 long ticks = result.timeZoneOffset.Ticks;
2451 if (ticks < -504000000000L || ticks > 504000000000L)
2452 {
2453 result.SetFailure(ParseFailureKind.FormatWithOriginalDateTime, "Format_OffsetOutOfRange");
2454 return false;
2455 }
2456 if ((result.flags & ParseFlags.TimeZoneUsed) == 0)
2457 {
2458 if ((styles & DateTimeStyles.AssumeLocal) != 0)
2459 {
2460 if ((styles & DateTimeStyles.AdjustToUniversal) == 0)
2461 {
2462 result.parsedDate = DateTime.SpecifyKind(result.parsedDate, DateTimeKind.Local);
2463 return true;
2464 }
2465 result.flags |= ParseFlags.TimeZoneUsed;
2466 result.timeZoneOffset = TimeZoneInfo.GetLocalUtcOffset(result.parsedDate, TimeZoneInfoOptions.NoThrowOnInvalidTime);
2467 }
2468 else
2469 {
2470 if ((styles & DateTimeStyles.AssumeUniversal) == 0)
2471 {
2472 return true;
2473 }
2474 if ((styles & DateTimeStyles.AdjustToUniversal) != 0)
2475 {
2476 result.parsedDate = DateTime.SpecifyKind(result.parsedDate, DateTimeKind.Utc);
2477 return true;
2478 }
2479 result.flags |= ParseFlags.TimeZoneUsed;
2480 result.timeZoneOffset = TimeSpan.Zero;
2481 }
2482 }
2483 if ((styles & DateTimeStyles.RoundtripKind) != 0 && (result.flags & ParseFlags.TimeZoneUtc) != 0)
2484 {
2485 result.parsedDate = DateTime.SpecifyKind(result.parsedDate, DateTimeKind.Utc);
2486 return true;
2487 }
2488 if ((styles & DateTimeStyles.AdjustToUniversal) != 0)
2489 {
2490 return AdjustTimeZoneToUniversal(ref result);
2491 }
2492 return AdjustTimeZoneToLocal(ref result, bTimeOnly);
2493 }
static bool AdjustTimeZoneToUniversal(ref DateTimeResult result)
static bool DateTimeOffsetTimeZonePostProcessing(ref DateTimeResult result, DateTimeStyles styles)
static bool AdjustTimeZoneToLocal(ref DateTimeResult result, bool bTimeOnly)

References System.DateTimeParse.AdjustTimeZoneToLocal(), System.DateTimeParse.AdjustTimeZoneToUniversal(), System.DateTimeParse.DateTimeOffsetTimeZonePostProcessing(), System.TimeZoneInfo.GetLocalUtcOffset(), System.L, System.DateTime.SpecifyKind(), and System.TimeSpan.Zero.

Referenced by System.DateTimeParse.DoStrictParse(), System.DateTimeParse.ParseFormatO(), System.DateTimeParse.ParseISO8601(), and System.DateTimeParse.TryParse().