3 namespace com.andoutomo.kybernetes.data
\r
5 public class TimeComponent
\r
11 #region getter/setter
\r
14 get { return hour; }
\r
18 get { return minute; }
\r
21 public int TotalMinute
\r
23 get { return hour * 60 + minute; }
\r
25 public decimal TotalHour
\r
27 get { return hour + (minute / 60); }
\r
31 #region Constructor & defaultMethod
\r
32 private TimeComponent(){}
\r
34 public TimeComponent(int _hour, int _minute)
\r
36 minuteToTime(_hour * 60 + _minute);
\r
37 if (this.hour != -1 && this.minute != -1) { IsValid = true; }
\r
40 public TimeComponent(int _totalMinute)
\r
42 minuteToTime(_totalMinute);
\r
43 if (this.hour != -1 && this.minute != -1) { IsValid = true; }
\r
53 public TimeComponent(string _timeStr)
\r
55 if (_timeStr == null || _timeStr.Equals(string.Empty))
\r
65 string[] data = _timeStr.Split(':');
\r
66 if (data.Length >= 2)
\r
68 this.minuteToTime(int.Parse(data[0]) * 60 + int.Parse(data[1]));
\r
72 this.minuteToTime(int.Parse(data[0]));
\r
75 public override int GetHashCode()
\r
77 return base.GetHashCode();
\r
79 public override string ToString()
\r
83 return hour.ToString("00") + ":" + minute.ToString("00");
\r
85 return string.Empty;
\r
88 public override bool Equals(object obj)
\r
90 if (!(obj is TimeComponent))
\r
94 if (base.Equals(obj))
\r
99 return this.TotalMinute == ((TimeComponent)obj).TotalMinute;
\r
105 public TimeComponent add(int minute)
\r
107 minuteToTime(minute + this.TotalMinute);
\r
110 public TimeComponent add(int hour, int minute)
\r
112 return add(hour * 60 + minute);
\r
115 public TimeComponent add(TimeComponent time)
\r
117 return add(time.TotalMinute);
\r
123 public TimeComponent subtract(int _minute)
\r
125 minuteToTime(this.TotalMinute - _minute);
\r
128 public TimeComponent subtract(int _hour, int _minute)
\r
130 return subtract(hour * 60 + minute);
\r
133 public TimeComponent subtract(TimeComponent time)
\r
135 return subtract(time.TotalMinute);
\r
141 private void minuteToTime(int minute)
\r
143 decimal decData = minute;
\r
153 this.hour = decimal.ToInt32(decimal.Divide(decData, 60));
\r
154 this.minute = decimal.ToInt32(decimal.Remainder(decData, 60));
\r
159 /// fromのコンポーネントとの差分を算出して返却します。
\r
161 /// <param name="from"></param>
\r
162 /// <returns></returns>
\r
163 public int getSubtractionMinute(TimeComponent from)
\r
165 if (this.TotalMinute >= from.TotalMinute)
\r
167 return decimal.ToInt32(Math.Abs(this.TotalMinute - from.TotalMinute));
\r
171 int dayOver = this.TotalMinute + (24 * 60);
\r
172 return decimal.ToInt32(Math.Abs(dayOver - from.TotalMinute));
\r
175 public TimeComponent getSubtractionComponent(TimeComponent from)
\r
177 return new TimeComponent(this.getSubtractionMinute(from));
\r
180 public static TimeComponent justNow()
\r
182 return new TimeComponent(DateTime.Now.Hour, DateTime.Now.Minute);
\r