public static SUBTime operator +(SUBTime lt, SUBTime rt) { SUBTime at = new SUBTime(); at.Hour = lt.Hour + rt.Hour; at.Minute = lt.Minute + rt.Minute; at.Second = lt.Second + rt.Second; at.SSecond = lt.SSecond + rt.SSecond; if (at.SSecond >= 1000) { at.Second += at.SSecond / 1000; at.SSecond = at.SSecond % 1000; } if (at.Second >= 60) { at.Minute += at.Second / 60; at.Second = at.Second % 60; } if (at.Minute >= 60) { at.Hour += at.Minute / 60; at.Minute = at.Minute % 60; } return(at); }
public static SUBTime operator -(SUBTime lt, SUBTime rt) { if (lt == rt || lt < rt) { return(new SUBTime()); } SUBTime at = new SUBTime(); at.Hour = lt.Hour - rt.Hour; at.Minute = lt.Minute - rt.Minute; at.Second = lt.Second - rt.Second; at.SSecond = lt.SSecond - rt.SSecond; if (at.SSecond < 0) { at.SSecond = 1000 - Math.Abs(at.SSecond); at.Second -= 1; } if (at.Second < 0) { at.Second = 60 - Math.Abs(at.Second); at.Minute -= 1; } if (at.Minute < 0) { at.Minute = 60 - Math.Abs(at.Minute); at.Hour -= 1; } return(at); }
public static SUBTime Parse(string stime) { SUBTime at = new SUBTime(); int hour, minute, second, ssecond; string[] sa = stime.Split(new char[] { '.' }, 2); if (sa.Length != 2) { return(null); } string sl = sa[0]; string sr = sa[1]; string[] saa = sl.Split(new char[] { ':' }, 3); if (saa.Length != 3) { return(null); } int.TryParse(saa[0], out hour); int.TryParse(saa[1], out minute); int.TryParse(saa[2], out second); int.TryParse(sr, out ssecond); at.Hour = hour; at.Minute = minute; at.Second = second; if (sr.Length == 2) { ssecond *= 10; } at.SSecond = ssecond; return(at); }