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;
}
}
}