(20181206)在线计算GPS周、北斗周、周内日、年积日、简化儒略日

介绍两个用于在线计算GPS周、周内日、年积日、简化儒略日的网站

网站一:http://www.gnsscalendar.com/

使用说明:

 

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

网站二:http://webapp.geod.nrcan.gc.ca/geod/tools-outils/calendr.php?locale=en

说明:

%%%----------------------------

计算实例:


 

%==================================================================

在线计算北斗周和GPS周等:

http://www.igmas.org/Product/Cpdetail/detail/nav_id/4/cate_id/36.html

 

 

 

 

 

  • 29
    点赞
  • 130
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是使用结构体实现北斗周内、约化儒略日、协调世界时之间互相转换的C++代码: ```c++ #include <iostream> #include <cmath> struct TimeStruct { int week; // 北斗 double sec; // 周内 }; struct JulianDateStruct { double jd; // 儒略日 double jdf; // 儒略日的小数部分 }; struct UTCStruct { int year; // 年 int month; // 月 int day; // int hour; // 时 int minute; // 分 double sec; // }; // 将UTC时间转换为儒略日 JulianDateStruct UTC2JD(const UTCStruct& utc) { int year = utc.year; int month = utc.month; int day = utc.day; int hour = utc.hour; int minute = utc.minute; double sec = utc.sec; if (month <= 2) { year -= 1; month += 12; } int A = year / 100; int B = 2 - A + A / 4; int C = floor(365.25 * year); int D = floor(30.6001 * (month + 1)); JulianDateStruct jd; jd.jd = B + C + D + day + hour / 24.0 + minute / 1440.0 + sec / 86400.0 + 1720994.5; jd.jdf = fmod(jd.jd, 1.0); return jd; } // 将儒略日转换为UTC时间 UTCStruct JD2UTC(const JulianDateStruct& jd) { double jd_int = floor(jd.jd + 0.5); double jd_frac = jd.jd + 0.5 - jd_int; int A = floor((jd_int - 1867216.25) / 36524.25); int B = jd_int + 1 + A - A / 4; int C = B + 1524; int D = floor((C - 122.1) / 365.25); int E = floor(365.25 * D); int F = floor((C - E) / 30.6001); int day = C - E - floor(30.6001 * F); int month = F - 1; if (month > 12) month -= 12; int year = D - 4715; if (month > 2) year -= 1; double sec = jd_frac * 86400; int hour = floor(sec / 3600); sec -= hour * 3600; int minute = floor(sec / 60); sec -= minute * 60; UTCStruct utc; utc.year = year; utc.month = month; utc.day = day; utc.hour = hour; utc.minute = minute; utc.sec = sec; return utc; } // 将北斗周内转换为儒略日 JulianDateStruct GPS2JD(int week, double sec) { double jd = week * 7 + sec / 86400 + 2444244.5; JulianDateStruct jd_struct; jd_struct.jd = jd; jd_struct.jdf = fmod(jd, 1.0); return jd_struct; } // 将儒略日转换为北斗周内 TimeStruct JD2GPS(const JulianDateStruct& jd) { double week = floor((jd.jd - 2444244.5) / 7); double sec = (jd.jd - 2444244.5 - week * 7) * 86400; TimeStruct gps; gps.week = week; gps.sec = sec; return gps; } int main() { // 测试数据 UTCStruct utc; utc.year = 2021; utc.month = 8; utc.day = 25; utc.hour = 12; utc.minute = 0; utc.sec = 0; // 将UTC时间转换为儒略日 JulianDateStruct jd = UTC2JD(utc); // 将儒略日转换为北斗周内 TimeStruct gps = JD2GPS(jd); // 输出结果 std::cout << "UTC time: " << utc.year << "/" << utc.month << "/" << utc.day << " " << utc.hour << ":" << utc.minute << ":" << utc.sec << std::endl; std::cout << "Julian date: " << jd.jd << std::endl; std::cout << "GPS week: " << gps.week << std::endl; std::cout << "GPS second: " << gps.sec << std::endl; return 0; } ``` 上述代码可以将UTC时间转换为北斗周内,也可以将北斗周内转换为UTC时间。其中,UTC时间使用结构体`UTCStruct`表示,儒略日使用结构体`JulianDateStruct`表示,北斗周内使用结构体`TimeStruct`表示。具体的转换函数实现如下: - `UTC2JD`函数:将UTC时间转换为儒略日。 - `JD2UTC`函数:将儒略日转换为UTC时间。 - `GPS2JD`函数:将北斗周内转换为儒略日。 - `JD2GPS`函数:将儒略日转换为北斗周内。 注:上述代码中的计算方式仅适用于儒略日和UTC时间之间的转换,如果需要转换为其他时间系统,则需要使用相应的计算方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值