Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
ISOWeek.cs
Go to the documentation of this file.
2
3public static class ISOWeek
4{
5 public static int GetWeekOfYear(DateTime date)
6 {
7 int weekNumber = GetWeekNumber(date);
8 if (weekNumber < 1)
9 {
10 return GetWeeksInYear(date.Year - 1);
11 }
12 if (weekNumber > GetWeeksInYear(date.Year))
13 {
14 return 1;
15 }
16 return weekNumber;
17 }
18
19 public static int GetYear(DateTime date)
20 {
21 int weekNumber = GetWeekNumber(date);
22 if (weekNumber < 1)
23 {
24 return date.Year - 1;
25 }
26 if (weekNumber > GetWeeksInYear(date.Year))
27 {
28 return date.Year + 1;
29 }
30 return date.Year;
31 }
32
33 public static DateTime GetYearStart(int year)
34 {
35 return ToDateTime(year, 1, DayOfWeek.Monday);
36 }
37
38 public static DateTime GetYearEnd(int year)
39 {
41 }
42
43 public static int GetWeeksInYear(int year)
44 {
45 if (year < 1 || year > 9999)
46 {
48 }
49 if (P(year) == 4 || P(year - 1) == 3)
50 {
51 return 53;
52 }
53 return 52;
54 static int P(int y)
55 {
56 return (y + y / 4 - y / 100 + y / 400) % 7;
57 }
58 }
59
60 public static DateTime ToDateTime(int year, int week, DayOfWeek dayOfWeek)
61 {
62 if (year < 1 || year > 9999)
63 {
65 }
66 if (week < 1 || week > 53)
67 {
69 }
70 if (dayOfWeek < DayOfWeek.Sunday || dayOfWeek > (DayOfWeek)7)
71 {
73 }
74 int num = GetWeekday(new DateTime(year, 1, 4).DayOfWeek) + 3;
75 int num2 = week * 7 + GetWeekday(dayOfWeek) - num;
76 return new DateTime(year, 1, 1).AddDays(num2 - 1);
77 }
78
79 private static int GetWeekNumber(DateTime date)
80 {
81 return (date.DayOfYear - GetWeekday(date.DayOfWeek) + 10) / 7;
82 }
83
84 private static int GetWeekday(DayOfWeek dayOfWeek)
85 {
86 if (dayOfWeek != 0)
87 {
88 return (int)dayOfWeek;
89 }
90 return 7;
91 }
92}
static int GetWeekOfYear(DateTime date)
Definition ISOWeek.cs:5
static int GetWeekNumber(DateTime date)
Definition ISOWeek.cs:79
static DateTime ToDateTime(int year, int week, DayOfWeek dayOfWeek)
Definition ISOWeek.cs:60
static int GetWeeksInYear(int year)
Definition ISOWeek.cs:43
static int GetWeekday(DayOfWeek dayOfWeek)
Definition ISOWeek.cs:84
static int GetYear(DateTime date)
Definition ISOWeek.cs:19
static DateTime GetYearStart(int year)
Definition ISOWeek.cs:33
static DateTime GetYearEnd(int year)
Definition ISOWeek.cs:38
static string ArgumentOutOfRange_Week_ISO
Definition SR.cs:2082
static string ArgumentOutOfRange_DayOfWeek
Definition SR.cs:1000
static string ArgumentOutOfRange_Year
Definition SR.cs:1128
Definition SR.cs:7
DayOfWeek
Definition DayOfWeek.cs:4
DayOfWeek DayOfWeek
Definition DateTime.cs:76