/* ------------------------------------------------------------------------- * BKG NTRIP Server * ------------------------------------------------------------------------- * * Class: bncutils * * Purpose: Auxiliary Functions * * Author: L. Mervart * * Created: 08-Apr-2008 * * Changes: * * -----------------------------------------------------------------------*/ #include #include #include #include #include #include #include "bnsutils.h" using namespace std; // //////////////////////////////////////////////////////////////////////////// void expandEnvVar(QString& str) { QRegExp rx("(\\$\\{.+\\})"); if (rx.indexIn(str) != -1) { QStringListIterator it(rx.capturedTexts()); if (it.hasNext()) { QString rxStr = it.next(); QString envVar = rxStr.mid(2,rxStr.length()-3); str.replace(rxStr, qgetenv(envVar.toAscii())); } } } // //////////////////////////////////////////////////////////////////////////// QDateTime dateAndTimeFromGPSweek(int GPSWeek, double GPSWeeks) { static const QDate zeroEpoch(1980, 1, 6); QDate date(zeroEpoch); QTime time(0,0,0,0); int weekDays = int(GPSWeeks) / 86400; date = date.addDays( GPSWeek * 7 + weekDays ); time = time.addMSecs( int( (GPSWeeks - 86400 * weekDays) * 1e3 ) ); return QDateTime(date,time); } // //////////////////////////////////////////////////////////////////////////// void GPSweekFromDateAndTime(const QDateTime& dateTime, int& GPSWeek, double& GPSWeeks) { static const QDateTime zeroEpoch(QDate(1980, 1, 6)); GPSWeek = zeroEpoch.daysTo(dateTime) / 7; GPSWeeks = (dateTime.date().dayOfWeek() - 1) * 86400.0 - dateTime.time().msecsTo(QTime()) / 1e3; } // //////////////////////////////////////////////////////////////////////////// void currentGPSWeeks(int& week, double& sec) { QDateTime currDateTime = QDateTime::currentDateTime().toUTC(); QDate currDate = currDateTime.date(); QTime currTime = currDateTime.time(); week = int( (double(currDate.toJulianDay()) - 2444244.5) / 7 ); sec = (currDate.dayOfWeek() % 7) * 24.0 * 3600.0 + currTime.hour() * 3600.0 + currTime.minute() * 60.0 + currTime.second() + currTime.msec() / 1000.0; }