#include "sun.h" class Sun::JdTime { public: static constexpr double JULIAN_OFFSET = 68.184 / 86400.0; static constexpr double JULIAN_DATEATY2K = 2451544.500000; double julianDate; double daysSinceY2K; double siderialUtcTime; double localHour; double utcHour; int day; int year; JdTime(); void update(); std::time_t toStdTime(); void fromStdTime(std::time_t time); }; Sun::JdTime::JdTime() { update(); } void Sun::JdTime::update() { std::time_t time = std::time(nullptr); fromStdTime(time); } void Sun::JdTime::fromStdTime(std::time_t time) { std::tm ltime = *std::localtime( &time ); localHour = ltime.tm_hour + ltime.tm_min/60.0 + ltime.tm_sec/3600.0; utcHour = localHour - ltime.tm_gmtoff/3600.0; day = ltime.tm_yday; year = ltime.tm_year + 1900; std::tm millennium = {0,0,0,1,0,100}; std::time_t millenniumTime = std::mktime(&millennium) - timezone; daysSinceY2K = (time - millenniumTime)/(60*60*24.0); //std::cout<<"days since y2k: "<