OSDN Git Service

初期登録
[kybernetes/Kybernetes.git] / KyberNetes / data / Component / DateComponents.cs
1 using System;\r
2 using com.andoutomo.kybernetes.control;\r
3 \r
4 namespace com.andoutomo.kybernetes.data\r
5 {\r
6     internal class DateComponents\r
7     {\r
8         private DateTime innerDate;\r
9 \r
10         internal DateComponents(int year, int month, int day)\r
11         {\r
12             innerDate = new DateTime(year, month, day);\r
13         }\r
14         internal DateComponents(int month, int day)\r
15         {\r
16             innerDate = new DateTime(DateTime.Today.Year, month, day);\r
17         }\r
18         /// <summary>\r
19         /// スペース区切りで日付と時刻を分け、日付のみさらにスプリッタで分ける。\r
20         /// SQLite向けコンストラクタ\r
21         /// </summary>\r
22         /// <param name="dateStr"></param>\r
23         /// <param name="separater"></param>\r
24         internal DateComponents(string dateStr,char separater)\r
25         {\r
26             string[] wkData1 = dateStr.Split(' ');\r
27             string[] wkData2 = wkData1[0].Split(separater);\r
28             innerDate = new DateTime(int.Parse(wkData2[0]), int.Parse(wkData2[1]), int.Parse(wkData2[2]));\r
29         }\r
30         /// <summary>\r
31         /// yyyyMMdd方式か、MMdd方式で表記された文字列から日付コンポーネントを作成する\r
32         /// </summary>\r
33         /// <param name="dateStr"></param>\r
34         internal DateComponents(string dateStr)\r
35         {\r
36             try\r
37             {\r
38                 if (dateStr.Length == 8)\r
39                 {\r
40                     string yearStr = dateStr.Substring(0, 4);\r
41                     string monthStr = dateStr.Substring(4, 2);\r
42                     string dayStr = dateStr.Substring(6, 2);\r
43                     innerDate = new DateTime(int.Parse(yearStr), int.Parse(monthStr), int.Parse(dayStr));\r
44                 }\r
45                 else if (dateStr.Length == 4)\r
46                 {\r
47                     string monthStr = dateStr.Substring(0, 2);\r
48                     string dayStr = dateStr.Substring(2, 2);\r
49                     innerDate = new DateTime(DateTime.Today.Year, int.Parse(monthStr), int.Parse(dayStr));\r
50 \r
51                 }\r
52                 else\r
53                 {\r
54                     throw new KybernetesApplicationException("日付への変換ができません:" + dateStr);\r
55                 }\r
56             }\r
57             catch (Exception e)\r
58             {\r
59                 throw new KybernetesApplicationException(e);\r
60             }\r
61         }\r
62 \r
63         internal DateComponents(DateTime dateTime)\r
64         {\r
65             innerDate = dateTime;\r
66         }\r
67 \r
68         internal void addDate(int dateToAdd)\r
69         {\r
70             innerDate = innerDate.AddDays(dateToAdd);\r
71         }\r
72 \r
73         /// <summary>\r
74         /// 日付文字列を出力(デフォルト)\r
75         /// </summary>\r
76         /// <returns></returns>\r
77         internal string getDateString()\r
78         {\r
79             return innerDate.ToString("MM/dd");\r
80         }\r
81         internal string getDateString(string format)\r
82         {\r
83             return innerDate.ToString(format);\r
84         }\r
85         /// <summary>\r
86         /// 曜日を出力します。\r
87         /// </summary>\r
88         /// <returns></returns>\r
89         internal string getDowStr()\r
90         {\r
91             switch (innerDate.DayOfWeek){\r
92                 case DayOfWeek.Monday:\r
93                     return "月";\r
94                 case DayOfWeek.Tuesday:\r
95                     return "火";\r
96                 case DayOfWeek.Wednesday:\r
97                     return "水";\r
98                 case DayOfWeek.Thursday:\r
99                     return "木";\r
100                 case DayOfWeek.Friday:\r
101                     return "金";\r
102                 case DayOfWeek.Saturday:\r
103                     return "土";\r
104                 case DayOfWeek.Sunday:\r
105                     return "日";\r
106 \r
107                 default:\r
108                     return "";\r
109             }\r
110         }\r
111         /// <summary>\r
112         /// 日数差を計算します。\r
113         /// </summary>\r
114         /// <param name="target"></param>\r
115         /// <returns></returns>\r
116         internal int calculateDateDiff(DateComponents target)\r
117         {\r
118             TimeSpan thisDateLange = innerDate.Subtract(target.innerDate);\r
119             return thisDateLange.Days;\r
120         }\r
121     }\r
122 }\r