Skip to content
Snippets Groups Projects
m_time.h 2.23 KiB
Newer Older
#ifndef m_time
#define m_time
		int years; //
		int mounts; //
		int days; //
		int hours; //
		int min; //
		int sec; //
	};
class Ot {
private:
	const double m_correction = 69.184; //      TAI  UTC     TT  TAI 
	timespec c_time{ 0,0 };
		timespec_get(&c_time, TIME_UTC);
	//   UNIX ,   -  
	double getCurrent_US(double time_zone = 0) {
		timespec_get(&c_time, TIME_UTC);
		return (double(c_time.tv_sec)+ time_zone *3600 + c_time.tv_nsec * pow(10, -9));
	};
	//     ,   -  
	double getCurrent_MJD(double time_zone = 0) {
		return convert_JD_to_MJD(convert_US_to_JD(getCurrent_US(time_zone)));
	};
	double getCurrent_TT(double time_zone = 0) {
		return (getCurrent_MJD(time_zone) + m_correction / double(86400));
	}
	double getCurrent_TDB(double time_zone = 0);
	//    
	double GMST(double deltuUT = 0);
	//     
	
	//input_time must be in the format US
	double convert_US_to_JD(double input_time, double time_zone = 0) {
		return (2440587.5 + (input_time + time_zone *3600) / double(86400));
	};
	//input_time must be in the format JD
	double convert_JD_to_MJD(double input_time) {
		return (input_time - 2400000.5);
	};
	//input_time must be in the format MJD
	double convert_MJD_to_TT(double input_time) {
		return (input_time + m_correction / double(86400));
	}
	//input_time must be in the format TT
	double convert_TT_to_TDB(double input_time);

	double convert_GDs_to_MJD(orbit_date input_time);
	double convert_MJD_to_TDB(double input_time);
	double convert_MJD_to_GMST(double input_MJD, double deltaUT = 0);
	double convert_GMST_to_GTST(double input_MJD, double input_GMST);
	double convert_MJD_to_GTST(double input_MJD, double deltaUT = 0);