+++ /dev/null
-using System;\r
-\r
-namespace com.andoutomo.kybernetes.data\r
-{\r
- internal class TimeComponent\r
- {\r
- private int hour;\r
- private int minute;\r
-\r
-\r
- #region getter/setter\r
- internal int Hour\r
- {\r
- get { return hour; }\r
- }\r
- internal int Minute\r
- {\r
- get { return minute; }\r
- }\r
-\r
- internal int TotalMinute\r
- {\r
- get { return hour * 60 + minute; }\r
- }\r
- internal decimal TotalHour\r
- {\r
- get { return hour + (minute / 60); }\r
- }\r
- #endregion\r
-\r
- #region Constructor & defaultMethod\r
- private TimeComponent(){}\r
-\r
- internal TimeComponent(int _hour, int _minute)\r
- {\r
- minuteToTime(_hour * 60 + _minute);\r
- if (this.hour != -1 && this.minute != -1) { IsValid = true; }\r
- }\r
-\r
- internal TimeComponent(int _totalMinute)\r
- {\r
- minuteToTime(_totalMinute);\r
- if (this.hour != -1 && this.minute != -1) { IsValid = true; }\r
- }\r
-\r
-\r
- internal bool IsValid\r
- {\r
- get;\r
- private set;\r
- }\r
-\r
- internal TimeComponent(string _timeStr)\r
- {\r
- if (_timeStr == null || _timeStr.Equals(string.Empty))\r
- {\r
- IsValid = false;\r
- this.hour = -1;\r
- this.minute = -1;\r
- return;\r
- }\r
- IsValid = true;\r
-\r
-\r
- string[] data = _timeStr.Split(':');\r
- if (data.Length >= 2)\r
- {\r
- this.minuteToTime(int.Parse(data[0]) * 60 + int.Parse(data[1]));\r
- }\r
- else\r
- {\r
- this.minuteToTime(int.Parse(data[0]));\r
- }\r
- }\r
- public override int GetHashCode()\r
- {\r
- return base.GetHashCode();\r
- }\r
- public override string ToString()\r
- {\r
- if (IsValid)\r
- {\r
- return hour.ToString("00") + ":" + minute.ToString("00");\r
- }\r
- return string.Empty;\r
- }\r
-\r
- public override bool Equals(object obj)\r
- {\r
- if (!(obj is TimeComponent))\r
- {\r
- return false;\r
- }\r
- if (base.Equals(obj))\r
- {\r
- return true;\r
- }\r
-\r
- return this.TotalMinute == ((TimeComponent)obj).TotalMinute;\r
- }\r
- #endregion\r
-\r
- #region Calculate\r
- #region add\r
- internal TimeComponent add(int minute)\r
- {\r
- minuteToTime(minute + this.TotalMinute);\r
- return this;\r
- }\r
- internal TimeComponent add(int hour, int minute)\r
- {\r
- return add(hour * 60 + minute);\r
- \r
- }\r
- internal TimeComponent add(TimeComponent time)\r
- {\r
- return add(time.TotalMinute);\r
- \r
- }\r
- #endregion\r
-\r
- #region subtract\r
- internal TimeComponent subtract(int _minute)\r
- {\r
- minuteToTime(this.TotalMinute - _minute);\r
- return this;\r
- }\r
- internal TimeComponent subtract(int _hour, int _minute)\r
- {\r
- return subtract(hour * 60 + minute);\r
- \r
- }\r
- internal TimeComponent subtract(TimeComponent time)\r
- {\r
- return subtract(time.TotalMinute);\r
- }\r
- #endregion\r
-\r
-\r
-\r
- private void minuteToTime(int minute)\r
- {\r
- decimal decData = minute;\r
- if (decData <= 0)\r
- {\r
- IsValid = false;\r
- this.hour = -1;\r
- this.minute = -1;\r
-\r
- }\r
-\r
-\r
- this.hour = decimal.ToInt32(decimal.Divide(decData, 60));\r
- this.minute = decimal.ToInt32(decimal.Remainder(decData, 60));\r
- }\r
- #endregion\r
-\r
- internal int getSubtractionMinute(TimeComponent from)\r
- {\r
- return decimal.ToInt32(Math.Abs(this.TotalMinute - from.TotalMinute));\r
- }\r
- internal TimeComponent getSubtractionComponent(TimeComponent from)\r
- {\r
- return new TimeComponent(this.getSubtractionMinute(from));\r
- }\r
-\r
- internal static TimeComponent justNow()\r
- {\r
- return new TimeComponent(DateTime.Now.Hour, DateTime.Now.Minute);\r
- }\r
- }\r
-}\r