北斗周内秒,协调世界时,约化儒略日时间系统互相转换C++代码,分头文件,主函数,测试
时间: 2024-05-10 17:19:38 浏览: 166
头文件 "TimeConversion.h":
```cpp
#ifndef TIME_CONVERSION_H
#define TIME_CONVERSION_H
#include <iostream>
#include <cmath>
using namespace std;
class TimeConversion {
public:
static const double PI;
static const double TWO_PI;
static const double SECONDS_IN_DAY;
static const double JULIAN_EPOCH;
static const double JULIAN_CENTURY;
static const double JULIAN_YEAR;
static const double JULIAN_J2000;
static double JulianDate(double year, double month, double day);
static double JulianDate(double year, double month, double day, double hour, double minute, double second);
static double J2000(double jd);
static double J2000(double year, double month, double day, double hour, double minute, double second);
static double GreenwichSiderealTime(double jd);
static double GreenwichSiderealTime(double year, double month, double day, double hour, double minute, double second);
static double UTCToTai(double utc);
static double TaiToUTC(double tai);
static double UTCToTAI(double year, double month, double day, double hour, double minute, double second);
static double TAIToUTC(double year, double month, double day, double hour, double minute, double second);
};
#endif
```
源文件 "TimeConversion.cpp":
```cpp
#include "TimeConversion.h"
const double TimeConversion::PI = 3.14159265358979323846;
const double TimeConversion::TWO_PI = 6.28318530717958647692;
const double TimeConversion::SECONDS_IN_DAY = 86400.0;
const double TimeConversion::JULIAN_EPOCH = 2451545.0;
const double TimeConversion::JULIAN_CENTURY = 36525.0;
const double TimeConversion::JULIAN_YEAR = 365.25;
const double TimeConversion::JULIAN_J2000 = 2451545.0;
double TimeConversion::JulianDate(double year, double month, double day) {
double a = floor((14 - month) / 12);
double y = year + 4800 - a;
double m = month + 12 * a - 3;
double jd = day + floor((153 * m + 2) / 5) + 365 * y + floor(y / 4) - floor(y / 100) + floor(y / 400) - 32045;
return jd;
}
double TimeConversion::JulianDate(double year, double month, double day, double hour, double minute, double second) {
double jd = JulianDate(year, month, day);
jd += (hour - 12) / 24.0 + minute / 1440.0 + second / 86400.0;
return jd;
}
double TimeConversion::J2000(double jd) {
return jd - JULIAN_J2000;
}
double TimeConversion::J2000(double year, double month, double day, double hour, double minute, double second) {
double jd = JulianDate(year, month, day, hour, minute, second);
return J2000(jd);
}
double TimeConversion::GreenwichSiderealTime(double jd) {
double T = J2000(jd) / 36525.0;
double T0 = 6.697374558 + 2400.051336 * T + 0.000025862 * pow(T, 2);
T0 = fmod(T0, 24);
double UT = fmod(jd + 0.5, 1) * 24;
double GST = fmod(T0 + UT * 1.002737909, 24);
return GST;
}
double TimeConversion::GreenwichSiderealTime(double year, double month, double day, double hour, double minute, double second) {
double jd = JulianDate(year, month, day, hour, minute, second);
return GreenwichSiderealTime(jd);
}
double TimeConversion::UTCToTai(double utc) {
double tai = utc + 37.0;
return tai;
}
double TimeConversion::TaiToUTC(double tai) {
double utc = tai - 37.0;
return utc;
}
double TimeConversion::UTCToTAI(double year, double month, double day, double hour, double minute, double second) {
double utc = JulianDate(year, month, day, hour, minute, second);
double tai = UTCToTai(utc);
return tai;
}
double TimeConversion::TAIToUTC(double year, double month, double day, double hour, double minute, double second) {
double tai = JulianDate(year, month, day, hour, minute, second);
double utc = TaiToUTC(tai);
return utc;
}
```
主函数 "main.cpp":
```cpp
#include "TimeConversion.h"
int main() {
// Test JulianDate function
double jd = TimeConversion::JulianDate(2022, 9, 15, 12, 0, 0);
cout << "Julian Date: " << jd << endl;
// Test J2000 function
double j2000 = TimeConversion::J2000(2459488.0);
cout << "J2000: " << j2000 << endl;
// Test GreenwichSiderealTime function
double gst = TimeConversion::GreenwichSiderealTime(2459488.0);
cout << "Greenwich Sidereal Time: " << gst << endl;
// Test UTCToTai function
double tai = TimeConversion::UTCToTai(2459488.0);
cout << "TAI: " << tai << endl;
// Test TAIToUTC function
double utc = TimeConversion::TaiToUTC(2459488.0);
cout << "UTC: " << utc << endl;
return 0;
}
```
阅读全文
相关推荐
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![txt](https://img-home.csdnimg.cn/images/20241231045021.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)