Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
CurrentSystemTimeZone.cs
Go to the documentation of this file.
3
4namespace System;
5
6[Obsolete("System.CurrentSystemTimeZone has been deprecated. Investigate the use of System.TimeZoneInfo.Local instead.")]
7internal sealed class CurrentSystemTimeZone : TimeZone
8{
9 private readonly long m_ticksOffset;
10
11 private readonly string m_standardName;
12
13 private readonly string m_daylightName;
14
16
17 public override string StandardName => m_standardName;
18
19 public override string DaylightName => m_daylightName;
20
28
29 internal long GetUtcOffsetFromUniversalTime(DateTime time, ref bool isAmbiguousLocalDst)
30 {
31 TimeSpan timeSpan = new TimeSpan(m_ticksOffset);
32 DaylightTime daylightChanges = GetDaylightChanges(time.Year);
33 isAmbiguousLocalDst = false;
34 if (daylightChanges == null || daylightChanges.Delta.Ticks == 0L)
35 {
36 return timeSpan.Ticks;
37 }
38 DateTime dateTime = daylightChanges.Start - timeSpan;
39 DateTime dateTime2 = daylightChanges.End - timeSpan - daylightChanges.Delta;
40 DateTime dateTime3;
41 DateTime dateTime4;
42 if (daylightChanges.Delta.Ticks > 0)
43 {
44 dateTime3 = dateTime2 - daylightChanges.Delta;
45 dateTime4 = dateTime2;
46 }
47 else
48 {
49 dateTime3 = dateTime;
50 dateTime4 = dateTime - daylightChanges.Delta;
51 }
52 if ((!(dateTime > dateTime2)) ? (time >= dateTime && time < dateTime2) : (time < dateTime2 || time >= dateTime))
53 {
54 timeSpan += daylightChanges.Delta;
55 if (time >= dateTime3 && time < dateTime4)
56 {
57 isAmbiguousLocalDst = true;
58 }
59 }
60 return timeSpan.Ticks;
61 }
62
63 public override DateTime ToLocalTime(DateTime time)
64 {
65 if (time.Kind == DateTimeKind.Local)
66 {
67 return time;
68 }
69 bool isAmbiguousLocalDst = false;
70 long utcOffsetFromUniversalTime = GetUtcOffsetFromUniversalTime(time, ref isAmbiguousLocalDst);
71 long num = time.Ticks + utcOffsetFromUniversalTime;
72 if (num > 3155378975999999999L)
73 {
74 return new DateTime(3155378975999999999L, DateTimeKind.Local);
75 }
76 if (num < 0)
77 {
78 return new DateTime(0L, DateTimeKind.Local);
79 }
80 return new DateTime(num, DateTimeKind.Local, isAmbiguousLocalDst);
81 }
82
84 {
85 if (year < 1 || year > 9999)
86 {
88 }
90 }
91
93 {
96 TimeSpan delta = TimeSpan.Zero;
97 if (TimeZoneInfo.Local.SupportsDaylightSavingTime)
98 {
99 TimeZoneInfo.AdjustmentRule[] adjustmentRules = TimeZoneInfo.Local.GetAdjustmentRules();
100 foreach (TimeZoneInfo.AdjustmentRule adjustmentRule in adjustmentRules)
101 {
102 if (adjustmentRule.DateStart.Year <= year && adjustmentRule.DateEnd.Year >= year && adjustmentRule.DaylightDelta != TimeSpan.Zero)
103 {
104 start = TimeZoneInfo.TransitionTimeToDateTime(year, adjustmentRule.DaylightTransitionStart);
105 end = TimeZoneInfo.TransitionTimeToDateTime(year, adjustmentRule.DaylightTransitionEnd);
106 delta = adjustmentRule.DaylightDelta;
107 break;
108 }
109 }
110 }
111 return new DaylightTime(start, end, delta);
112 }
113
114 public override TimeSpan GetUtcOffset(DateTime time)
115 {
116 if (time.Kind == DateTimeKind.Utc)
117 {
118 return TimeSpan.Zero;
119 }
121 }
122
139}
virtual bool Contains(object key)
Definition Hashtable.cs:719
virtual void Add(object key, object? value)
Definition Hashtable.cs:676
readonly Hashtable m_CachedDaylightChanges
override DateTime ToLocalTime(DateTime time)
static DaylightTime CreateDaylightChanges(int year)
override DaylightTime GetDaylightChanges(int year)
DaylightTime GetCachedDaylightChanges(int year)
long GetUtcOffsetFromUniversalTime(DateTime time, ref bool isAmbiguousLocalDst)
override TimeSpan GetUtcOffset(DateTime time)
static string ArgumentOutOfRange_Range
Definition SR.cs:1096
static string Format(string resourceFormat, object p1)
Definition SR.cs:118
Definition SR.cs:7
static DateTime TransitionTimeToDateTime(int year, TransitionTime transitionTime)
static TimeZoneInfo Local
static TimeSpan CalculateUtcOffset(DateTime time, DaylightTime daylightTimes)
Definition TimeZone.cs:104
static readonly DateTime MinValue
Definition DateTime.cs:35
DateTimeKind Kind
Definition DateTime.cs:83
static readonly TimeSpan Zero
Definition TimeSpan.cs:21