Add a function to get the timezone description

This commit is contained in:
Erik Hofman 2021-03-13 10:12:46 +01:00
parent feaac37705
commit 1ea11d987e
2 changed files with 17 additions and 14 deletions

View File

@ -90,7 +90,8 @@ void SGTime::init( const SGGeod& location, const SGPath& root, time_t init_time
SGTimeZone* nearestTz = static_tzContainer->getNearest(location); SGTimeZone* nearestTz = static_tzContainer->getNearest(location);
if (nearestTz) { if (nearestTz) {
SGPath name = root / nearestTz->getDescription(); description = nearestTz->getDescription();
SGPath name = root / description;
zonename = name.utf8Str(); zonename = name.utf8Str();
SG_LOG( SG_EVENT, SG_DEBUG, "Using zonename = " << zonename ); SG_LOG( SG_EVENT, SG_DEBUG, "Using zonename = " << zonename );
} else { } else {
@ -117,11 +118,6 @@ SGTime::SGTime() {
} }
SGTime::~SGTime()
{
}
// given Julian Date and Longitude (decimal degrees West) compute // given Julian Date and Longitude (decimal degrees West) compute
// Local Sidereal Time, in decimal hours. // Local Sidereal Time, in decimal hours.
// //
@ -231,9 +227,10 @@ void SGTime::updateLocal( const SGGeod& aLocation, const SGPath& root ) {
time_t currGMT; time_t currGMT;
time_t aircraftLocalTime; time_t aircraftLocalTime;
SGTimeZone* nearestTz = static_tzContainer->getNearest(location); SGTimeZone* nearestTz = static_tzContainer->getNearest(location);
SGPath zone( root ); description = nearestTz->getDescription();
zone.append ( nearestTz->getDescription() ); SGPath zone = root / description;
zonename = zone.utf8Str(); zonename = zone.utf8Str();
SG_LOG( SG_EVENT, SG_DEBUG, "Using zonename = " << zonename );
//Avoid troubles when zone.tab hasn't got the right line endings //Avoid troubles when zone.tab hasn't got the right line endings
if (zonename[zonename.size()-1] == '\r') if (zonename[zonename.size()-1] == '\r')

View File

@ -38,7 +38,7 @@
// forward decls // forward decls
class SGPath; class SGPath;
class SGGeod; class SGGeod;
/** /**
* A class to calculate and manage a variety of time parameters. * A class to calculate and manage a variety of time parameters.
* The SGTime class provides many real-world time values. It * The SGTime class provides many real-world time values. It
@ -63,9 +63,12 @@ class SGTime {
private: private:
// Points to the current local timezone name; // Points to the current local timezone filename
std::string zonename; std::string zonename;
// Points to the current local timezone description
std::string description;
// Unix "calendar" time in seconds // Unix "calendar" time in seconds
time_t cur_time; time_t cur_time;
@ -129,9 +132,9 @@ public:
SGTime( const SGPath& root ); SGTime( const SGPath& root );
/** Destructor */ /** Destructor */
~SGTime(); ~SGTime() = default;
/** /**
* Update the time related variables. * Update the time related variables.
* The update() method requires you to pass in your position and * The update() method requires you to pass in your position and
* an optional time offset in seconds. The offset (or warp) allows * an optional time offset in seconds. The offset (or warp) allows
@ -163,9 +166,12 @@ public:
/** @return current system/unix time in seconds */ /** @return current system/unix time in seconds */
inline time_t get_cur_time() const { return cur_time; }; inline time_t get_cur_time() const { return cur_time; };
/** @return time zone name for your current position*/ /** @return time zone filename for your current position */
inline const char * get_zonename() const { return zonename.c_str(); } inline const char * get_zonename() const { return zonename.c_str(); }
/** @return time zone description for your current position */
inline const char * get_description() const { return description.c_str(); }
/** @return GMT in a "brokent down" tm structure */ /** @return GMT in a "brokent down" tm structure */
inline struct tm* getGmt()const { return (struct tm *)&m_gmt; }; inline struct tm* getGmt()const { return (struct tm *)&m_gmt; };
@ -200,7 +206,7 @@ public:
* @param second current second * @param second current second
* @return unix/system time in seconds * @return unix/system time in seconds
*/ */
time_t sgTimeGetGMT(int year, int month, int day, time_t sgTimeGetGMT(int year, int month, int day,
int hour, int minute, int second); int hour, int minute, int second);
/** /**