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