diff --git a/include/openspace/util/spicemanager.h b/include/openspace/util/spicemanager.h index f345115fa3..b7b4724de1 100644 --- a/include/openspace/util/spicemanager.h +++ b/include/openspace/util/spicemanager.h @@ -557,6 +557,12 @@ public: ephemerisTime, format )); } + + if (outBuf[0] == '*') { + // The conversion failed and we need to use et2utc + constexpr int SecondsPrecision = 3; + et2utc_c(ephemerisTime, "C", SecondsPrecision, bufferSize, outBuf); + } } std::string dateFromEphemerisTime(double ephemerisTime, const char* format); diff --git a/src/util/spicemanager.cpp b/src/util/spicemanager.cpp index 5027a62432..f07d1cbb0c 100644 --- a/src/util/spicemanager.cpp +++ b/src/util/spicemanager.cpp @@ -588,16 +588,23 @@ double SpiceManager::ephemerisTimeFromDate(const char* timeString) const { std::string SpiceManager::dateFromEphemerisTime(double ephemerisTime, const char* format) { - char Buffer[128]; - std::memset(Buffer, char(0), 128); + constexpr int BufferSize = 128; + char Buffer[BufferSize]; + std::memset(Buffer, char(0), BufferSize); - timout_c(ephemerisTime, format, 128, Buffer); + timout_c(ephemerisTime, format, BufferSize, Buffer); if (failed_c()) { throwSpiceError(fmt::format( "Error converting ephemeris time '{}' to date with format '{}'", ephemerisTime, format )); } + if (Buffer[0] == '*') { + // The conversion failed and we need to use et2utc + constexpr int SecondsPrecision = 3; + et2utc_c(ephemerisTime, "C", SecondsPrecision, BufferSize, Buffer); + } + return std::string(Buffer); }