北斗时,协调世界时,约化儒略日时间系统互相转换C++代码,用结构体,分头文件,主函数,测试
时间: 2024-05-16 08:18:33 浏览: 13
以下是一个可能的实现,使用了 `struct` 结构体来存储时间信息,并分别实现了转换函数和测试代码:
```cpp
#include <iostream>
#include <cmath>
using namespace std;
// 定义时间结构体
struct Time {
int year, month, day, hour, minute;
double second;
};
// 将日期转换为儒略日
double date2jd(int year, int month, int day) {
int a = (14 - month) / 12;
int y = year + 4800 - a;
int m = month + 12 * a - 3;
int jd = day + (153 * m + 2) / 5 + 365 * y + y / 4 - y / 100 + y / 400 - 32045;
return jd;
}
// 将时间转换为儒略日
double time2jd(int year, int month, int day, int hour, int minute, double second) {
double jd = date2jd(year, month, day);
jd += (hour - 12) / 24.0 + minute / 1440.0 + second / 86400.0;
return jd;
}
// 将儒略日转换为日期
void jd2date(double jd, int &year, int &month, int &day, double &frac) {
int a, b, c, d, e, z;
double f;
jd += 0.5;
z = floor(jd);
f = jd - z;
if (z < 2299161) {
a = z;
} else {
int alpha = floor((z - 1867216.25) / 36524.25);
a = z + 1 + alpha - floor(alpha / 4);
}
b = a + 1524;
c = floor((b - 122.1) / 365.25);
d = floor(365.25 * c);
e = floor((b - d) / 30.6001);
frac = b - d - floor(30.6001 * e) + f;
if (e < 14) {
month = e - 1;
} else {
month = e - 13;
}
if (month > 2) {
year = c - 4716;
} else {
year = c - 4715;
}
day = floor(frac);
frac -= day;
}
// 将儒略日转换为时间
void jd2time(double jd, int &year, int &month, int &day, int &hour, int &minute, double &second) {
double frac;
jd2date(jd, year, month, day, frac);
frac *= 24;
hour = floor(frac);
frac -= hour;
frac *= 60;
minute = floor(frac);
frac -= minute;
second = frac * 60;
}
int main() {
// 测试将日期转换为儒略日
cout << "2021-10-01 -> " << date2jd(2021, 10, 1) << endl;
// 测试将时间转换为儒略日
cout << "2021-10-01 12:00:00 -> " << time2jd(2021, 10, 1, 12, 0, 0) << endl;
// 测试将儒略日转换为日期和时间
int year, month, day, hour, minute;
double second;
double jd = 2459505.98;
jd2date(jd, year, month, day, second);
jd2time(jd, year, month, day, hour, minute, second);
cout << jd << " -> " << year << "-" << month << "-" << day << " " << hour << ":" << minute << ":" << second << endl;
return 0;
}
```
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)