Terraria v1.4.4.9
Terraria source code documentation
All Classes Namespaces Files Functions Variables Enumerations Enumerator Properties Events Macros

◆ TransitionTimeToDateTime()

static DateTime System.TimeZoneInfo.TransitionTimeToDateTime ( int year,
TransitionTime transitionTime )
inlinestaticpackage

Definition at line 2054 of file TimeZoneInfo.cs.

2055 {
2056 TimeSpan timeOfDay = transitionTime.TimeOfDay.TimeOfDay;
2057 DateTime result;
2058 if (transitionTime.IsFixedDateRule)
2059 {
2060 int num = transitionTime.Day;
2061 if (num > 28)
2062 {
2063 int num2 = DateTime.DaysInMonth(year, transitionTime.Month);
2064 if (num > num2)
2065 {
2066 num = num2;
2067 }
2068 }
2069 result = new DateTime(year, transitionTime.Month, num) + timeOfDay;
2070 }
2071 else if (transitionTime.Week <= 4)
2072 {
2073 result = new DateTime(year, transitionTime.Month, 1) + timeOfDay;
2074 int dayOfWeek = (int)result.DayOfWeek;
2075 int num3 = (int)(transitionTime.DayOfWeek - dayOfWeek);
2076 if (num3 < 0)
2077 {
2078 num3 += 7;
2079 }
2080 num3 += 7 * (transitionTime.Week - 1);
2081 if (num3 > 0)
2082 {
2083 result = result.AddDays(num3);
2084 }
2085 }
2086 else
2087 {
2088 int day = DateTime.DaysInMonth(year, transitionTime.Month);
2089 result = new DateTime(year, transitionTime.Month, day) + timeOfDay;
2090 int dayOfWeek2 = (int)result.DayOfWeek;
2091 int num4 = (int)(dayOfWeek2 - transitionTime.DayOfWeek);
2092 if (num4 < 0)
2093 {
2094 num4 += 7;
2095 }
2096 if (num4 > 0)
2097 {
2098 result = result.AddDays(-num4);
2099 }
2100 }
2101 return result;
2102 }

References System.DateTime.AddDays(), System.DateTime, System.DateTime.DayOfWeek, System.DateTime.DaysInMonth(), System.Runtime.Serialization.Dictionary, and System.year.

Referenced by System.CurrentSystemTimeZone.CreateDaylightChanges(), and System.TimeZoneInfo.GetDaylightTime().