--- /dev/null
+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