// Change the seconds component only public virtual bool ChangeSecond(int newSecs) { long tsecs = _totalSeconds; int hours, mins, secs; GetTime(out hours, out mins, out secs); var newTime = new DayTime(hours, mins, newSecs); _totalSeconds = newTime._totalSeconds; return(tsecs != _totalSeconds); }
// Change the hour component public bool ChangeHour(int newHour) { long tsecs = _totalSeconds; int hours, mins, secs; GetTime(out hours, out mins, out secs); var newTime = new DayTime(newHour, mins, secs); newTime.CheckHours(); _totalSeconds = newTime._totalSeconds; return(tsecs != _totalSeconds); }
public Declination ParseFromMeade(String s) { Declination result = new Declination(); // LOGV2(DEBUG_GENERAL, F("Declination.Parse(%s)"), s.c_str()); // Use the DayTime code to parse it... DayTime dt = DayTime.ParseFromMeade(s); // ...and then correct for hemisphere //result._totalSeconds = dt.TotalSeconds + (NORTHERN_HEMISPHERE? -(ArcSecondsPerHemisphere / 2) : (ArcSecondsPerHemisphere / 2)); //LOGV3(DEBUG_GENERAL, F("Declination.Parse(%s) -> %s"), s.c_str(), result.ToString()); result._totalSeconds = dt.TotalSeconds; return(result); }
public static DayTime ParseFromMeade(String s) { DayTime result = new DayTime(); int i = 0; long sgn = 1; // LOGV2(DEBUG_MEADE, F("DayTime: Parse Coord from [%s]"), s.c_str()); // Check whether we have a Math.Sign. This should be able to parse RA and DEC strings (RA never has a Math.Sign, and DEC should always have one). if ((s[i] == '-') || (s[i] == '+')) { sgn = s[i] == '-' ? -1 : +1; i++; } // Degs can be 2 or 3 digits long degs = s[i++] - '0'; // LOGV3(DEBUG_MEADE, F("DayTime: 1st digit [%c] -> degs=%l"), s[i - 1], degs); degs = degs * 10 + s[i++] - '0'; // LOGV3(DEBUG_MEADE, F("DayTime: 2nd digit [%c] -> degs=%l"), s[i - 1], degs); // Third digit? if ((s[i] >= '0') && (s[i] <= '9')) { degs = degs * 10 + s[i++] - '0'; // LOGV3(DEBUG_MEADE, F("DayTime: 3rd digit [%c] -> degs=%d"), s[i - 1], degs); } i++; // Skip seperator int mins = int.Parse(s.Substring(i, i + 2)); // LOGV3(DEBUG_MEADE, F("DayTime: Minutes are [%s] -> mins=%d"), s.Substring(i, i + 2).c_str(), mins); int secs = 0; if (s.Length > i + 4) { secs = int.Parse(s.Substring(i + 3, i + 5)); // LOGV3(DEBUG_MEADE, F("DayTime: Seconds are [%s] -> secs=%d"), s.Substring(i + 3, i + 5).c_str(), secs); } else { // LOGV3(DEBUG_MEADE, F("DayTime: No Seconds. slen %d is not > %d"), s.length(), i + 4); } // Get the Math.Signed total seconds specified.... result._totalSeconds = sgn * (((degs * 60L + mins) * 60L) + secs); // LOGV5(DEBUG_MEADE, F("DayTime: TotalSeconds are %l from %lh %dm %ds"), result._totalSeconds, degs, mins, secs); return(result); }
public DayTime(DayTime other) { _totalSeconds = other._totalSeconds; }
// Subtract another time, wrapping seconds, minutes and hours if needed public void SubtractTime(DayTime other) { _totalSeconds -= other._totalSeconds; CheckHours(); }
// Add another time, wrapping seconds, minutes and hours if needed public void AddTime(DayTime other) { _totalSeconds += other._totalSeconds; CheckHours(); }
public void SetTime(DayTime other) { _totalSeconds = other._totalSeconds; CheckHours(); }