OSDN Git Service

V.1.01
[kybernetes/Kybernetes.git] / KyberNetes / data / Component / DateComponent.cs
diff --git a/KyberNetes/data/Component/DateComponent.cs b/KyberNetes/data/Component/DateComponent.cs
new file mode 100644 (file)
index 0000000..681a743
--- /dev/null
@@ -0,0 +1,122 @@
+using System;\r
+using com.andoutomo.kybernetes.control;\r
+\r
+namespace com.andoutomo.kybernetes.data\r
+{\r
+    internal class DateComponent\r
+    {\r
+        private DateTime innerDate;\r
+\r
+        internal DateComponent(int year, int month, int day)\r
+        {\r
+            innerDate = new DateTime(year, month, day);\r
+        }\r
+        internal DateComponent(int month, int day)\r
+        {\r
+            innerDate = new DateTime(DateTime.Today.Year, month, day);\r
+        }\r
+        /// <summary>\r
+        /// スペース区切りで日付と時刻を分け、日付のみさらにスプリッタで分ける。\r
+        /// SQLite向けコンストラクタ\r
+        /// </summary>\r
+        /// <param name="dateStr"></param>\r
+        /// <param name="separater"></param>\r
+        internal DateComponent(string dateStr,char separater)\r
+        {\r
+            string[] wkData1 = dateStr.Split(' ');\r
+            string[] wkData2 = wkData1[0].Split(separater);\r
+            innerDate = new DateTime(int.Parse(wkData2[0]), int.Parse(wkData2[1]), int.Parse(wkData2[2]));\r
+        }\r
+        /// <summary>\r
+        /// yyyyMMdd方式か、MMdd方式で表記された文字列から日付コンポーネントを作成する\r
+        /// </summary>\r
+        /// <param name="dateStr"></param>\r
+        internal DateComponent(string dateStr)\r
+        {\r
+            try\r
+            {\r
+                if (dateStr.Length == 8)\r
+                {\r
+                    string yearStr = dateStr.Substring(0, 4);\r
+                    string monthStr = dateStr.Substring(4, 2);\r
+                    string dayStr = dateStr.Substring(6, 2);\r
+                    innerDate = new DateTime(int.Parse(yearStr), int.Parse(monthStr), int.Parse(dayStr));\r
+                }\r
+                else if (dateStr.Length == 4)\r
+                {\r
+                    string monthStr = dateStr.Substring(0, 2);\r
+                    string dayStr = dateStr.Substring(2, 2);\r
+                    innerDate = new DateTime(DateTime.Today.Year, int.Parse(monthStr), int.Parse(dayStr));\r
+\r
+                }\r
+                else\r
+                {\r
+                    throw new KybernetesApplicationException("日付への変換ができません:" + dateStr);\r
+                }\r
+            }\r
+            catch (Exception e)\r
+            {\r
+                throw new KybernetesApplicationException(e);\r
+            }\r
+        }\r
+\r
+        internal DateComponent(DateTime dateTime)\r
+        {\r
+            innerDate = dateTime;\r
+        }\r
+\r
+        internal void addDate(int dateToAdd)\r
+        {\r
+            innerDate = innerDate.AddDays(dateToAdd);\r
+        }\r
+\r
+        /// <summary>\r
+        /// 日付文字列を出力(デフォルト)\r
+        /// </summary>\r
+        /// <returns></returns>\r
+        internal string getDateString()\r
+        {\r
+            return innerDate.ToString("MM/dd");\r
+        }\r
+        internal string getDateString(string format)\r
+        {\r
+            return innerDate.ToString(format);\r
+        }\r
+        /// <summary>\r
+        /// 曜日を出力します。\r
+        /// </summary>\r
+        /// <returns></returns>\r
+        internal string getDowStr()\r
+        {\r
+            switch (innerDate.DayOfWeek){\r
+                case DayOfWeek.Monday:\r
+                    return "月";\r
+                case DayOfWeek.Tuesday:\r
+                    return "火";\r
+                case DayOfWeek.Wednesday:\r
+                    return "水";\r
+                case DayOfWeek.Thursday:\r
+                    return "木";\r
+                case DayOfWeek.Friday:\r
+                    return "金";\r
+                case DayOfWeek.Saturday:\r
+                    return "土";\r
+                case DayOfWeek.Sunday:\r
+                    return "日";\r
+\r
+                default:\r
+                    return "";\r
+            }\r
+        }\r
+        /// <summary>\r
+        /// 日数差を計算します。\r
+        /// </summary>\r
+        /// <param name="target"></param>\r
+        /// <returns></returns>\r
+        internal int calculateDateDiff(DateComponent target)\r
+        {\r
+            TimeSpan thisDateLange = innerDate.Subtract(target.innerDate);\r
+            return thisDateLange.Days;\r
+        }\r
+    }\r
+}\r