Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
TimeZone.cs
Go to the documentation of this file.
3
4namespace System;
5
6[Obsolete("System.TimeZone has been deprecated. Investigate the use of System.TimeZoneInfo instead.")]
7public abstract class TimeZone
8{
9 private static volatile TimeZone currentTimeZone;
10
11 private static object s_InternalSyncObject;
12
13 private static object InternalSyncObject
14 {
15 get
16 {
17 if (s_InternalSyncObject == null)
18 {
19 object value = new object();
20 Interlocked.CompareExchange<object>(ref s_InternalSyncObject, value, (object)null);
21 }
23 }
24 }
25
27 {
28 get
29 {
30 TimeZone timeZone = currentTimeZone;
31 if (timeZone == null)
32 {
34 {
35 if (currentTimeZone == null)
36 {
38 }
39 timeZone = currentTimeZone;
40 }
41 }
42 return timeZone;
43 }
44 }
45
46 public abstract string StandardName { get; }
47
48 public abstract string DaylightName { get; }
49
50 internal static void ResetTimeZone()
51 {
52 if (currentTimeZone != null)
53 {
55 {
56 currentTimeZone = null;
57 }
58 }
59 }
60
61 public abstract TimeSpan GetUtcOffset(DateTime time);
62
63 public virtual DateTime ToUniversalTime(DateTime time)
64 {
65 if (time.Kind == DateTimeKind.Utc)
66 {
67 return time;
68 }
69 long num = time.Ticks - GetUtcOffset(time).Ticks;
70 if (num > 3155378975999999999L)
71 {
72 return new DateTime(3155378975999999999L, DateTimeKind.Utc);
73 }
74 if (num < 0)
75 {
76 return new DateTime(0L, DateTimeKind.Utc);
77 }
78 return new DateTime(num, DateTimeKind.Utc);
79 }
80
81 public virtual DateTime ToLocalTime(DateTime time)
82 {
83 if (time.Kind == DateTimeKind.Local)
84 {
85 return time;
86 }
87 bool isAmbiguousLocalDst = false;
88 long utcOffsetFromUniversalTime = ((CurrentSystemTimeZone)CurrentTimeZone).GetUtcOffsetFromUniversalTime(time, ref isAmbiguousLocalDst);
89 return new DateTime(time.Ticks + utcOffsetFromUniversalTime, DateTimeKind.Local, isAmbiguousLocalDst);
90 }
91
92 public abstract DaylightTime GetDaylightChanges(int year);
93
94 public virtual bool IsDaylightSavingTime(DateTime time)
95 {
97 }
98
99 public static bool IsDaylightSavingTime(DateTime time, DaylightTime daylightTimes)
100 {
101 return CalculateUtcOffset(time, daylightTimes) != TimeSpan.Zero;
102 }
103
104 internal static TimeSpan CalculateUtcOffset(DateTime time, DaylightTime daylightTimes)
105 {
106 if (daylightTimes == null)
107 {
108 return TimeSpan.Zero;
109 }
110 DateTimeKind kind = time.Kind;
111 if (kind == DateTimeKind.Utc)
112 {
113 return TimeSpan.Zero;
114 }
115 DateTime dateTime = daylightTimes.Start + daylightTimes.Delta;
116 DateTime end = daylightTimes.End;
117 DateTime dateTime2;
118 DateTime dateTime3;
119 if (daylightTimes.Delta.Ticks > 0)
120 {
121 dateTime2 = end - daylightTimes.Delta;
122 dateTime3 = end;
123 }
124 else
125 {
126 dateTime2 = dateTime;
127 dateTime3 = dateTime - daylightTimes.Delta;
128 }
129 bool flag = false;
130 if (dateTime > end)
131 {
132 if (time >= dateTime || time < end)
133 {
134 flag = true;
135 }
136 }
137 else if (time >= dateTime && time < end)
138 {
139 flag = true;
140 }
141 if (flag && time >= dateTime2 && time < dateTime3)
142 {
143 flag = time.IsAmbiguousDaylightSavingTime();
144 }
145 if (flag)
146 {
147 return daylightTimes.Delta;
148 }
149 return TimeSpan.Zero;
150 }
151}
static int CompareExchange(ref int location1, int value, int comparand)
virtual bool IsDaylightSavingTime(DateTime time)
Definition TimeZone.cs:94
string DaylightName
Definition TimeZone.cs:48
static bool IsDaylightSavingTime(DateTime time, DaylightTime daylightTimes)
Definition TimeZone.cs:99
virtual DateTime ToLocalTime(DateTime time)
Definition TimeZone.cs:81
static void ResetTimeZone()
Definition TimeZone.cs:50
static volatile TimeZone currentTimeZone
Definition TimeZone.cs:9
static TimeZone CurrentTimeZone
Definition TimeZone.cs:27
static object s_InternalSyncObject
Definition TimeZone.cs:11
string StandardName
Definition TimeZone.cs:46
static TimeSpan CalculateUtcOffset(DateTime time, DaylightTime daylightTimes)
Definition TimeZone.cs:104
TimeSpan GetUtcOffset(DateTime time)
DaylightTime GetDaylightChanges(int year)
virtual DateTime ToUniversalTime(DateTime time)
Definition TimeZone.cs:63
static object InternalSyncObject
Definition TimeZone.cs:14
DateTimeKind Kind
Definition DateTime.cs:83
bool IsAmbiguousDaylightSavingTime()
Definition DateTime.cs:892
static readonly TimeSpan Zero
Definition TimeSpan.cs:21