【GPS周-周内秒、BDS周-周内秒转换与逆转换】

(1)北斗卫星导航系统的时间基准为北斗时(BDT),BDT采用国际单位制(SI)秒为基本单位连续累计,不闰秒,起始历元为2006年1月1日协调世界时(UTC)00时00分00秒。
(2)GPST属原子时系统,其秒长为国际制秒(SI),与原子时相同,但其起点与国际原子时(IAT)不同。GPST与UTC规定于1980年1月1日0时相一致。
( 3)BDT溯源到中国科学院国家授时中心(NTSC)保持的UTC时间,简称UTC(NTSC),与UTC之间的闰秒信息在导航电文中播报。BDT与UTC的偏差保持在100纳秒以内(模1秒)。
(4)北斗时和GPS时相差14秒
(5)gps开始时间为"1980-01-06 00:00:00",北斗开始时间为:“2006-01-01 00:00:00”。
1356是1980-01-06 至2006-01-01相差1356周;
1980 1984 1988 1992 1996 2000 2004闰年;
1981 1982 1983 1985 1986 1987 1989 1990 1991 1993 1994 1995 1997 1998 1999 2001 2002 2003 2005不是闰年;
((7366+19365)-5)/ 7=1356

1.判断闰年or平年

#if 1
int main()
{
	int year;
 
    /*printf("输入年份: ");
    scanf("%d",&year);*/

	for(year=1980; year<2006; year++)
	{
		if(year%4 == 0)
		{
			if( year%100 == 0)
			{
				//这里如果被400整除是闰年
				if ( year%400 == 0)
					printf("%d 闰年", year);//闰年
				else
					printf("%d 不是闰年", year);//不是闰年
			}
			else
				//被4整除,不能被100整除的是闰年
				printf("%d 是闰年", year );//闰年
		}
		else
			printf("%d 不是闰年", year);//不是闰年
	}
 
	system("pause");
	return 0;
}
#endif

在这里插入图片描述

2.GPS周-周内秒向BDS周-周周内秒的转换

//GPS周-周内秒向BDS周-周周内秒的转换
static private int[] gpsWeekWIS_bdsWeekWIS(int gpsWeek, int gpsWIS)
{
    int[] bdsWeekWIS = { 0, 0 };

    int difFromBegin = gpsWeek * 604800 + gpsWIS - 1356 * 604800 - 14;
    //计算北斗周
    int bdsWeek = difFromBegin / 604800;
    //计算北斗秒
    int bdsWIS = difFromBegin % 604800;

    bdsWeekWIS[0] = bdsWeek;
    bdsWeekWIS[1] = bdsWIS;
    return bdsWeekWIS;
}

3.BDS周-周内秒到GPS周-周内秒的转换

//BDS周-周内秒到GPS周-周内秒的转换
static private int[] bdsWeekWIS_gpsWeekWIS(int bdsWeek, int bdsWIS)
 {
     int[] gpsWeekWIS = { 0, 0 };

     int secDifGPS2BDS = bdsWeek * 604800 + bdsWIS + 1356 * 604800 + 14;
     int gpsWeek = secDifGPS2BDS / 604800;
     int gpsWIS = secDifGPS2BDS % 604800;

     gpsWeekWIS[0] = gpsWeek;
     gpsWeekWIS[1] = gpsWIS;
     return gpsWeekWIS;
 }

4.主函数调用

static void Main(string[] args)
{
    int[] gpsWeekWIS = { 2023, 432000 };
    Console.WriteLine("BDS周:{0:D},周内秒:{1:D}", gpsWeekWIS[0], gpsWeekWIS[1]);
    Console.WriteLine("*********************************");

    Console.Write("GPS周-周内秒 <--> BDS周-周内秒:");
    int[] bdsWeekWIS = gpsWeekWIS_bdsWeekWIS(gpsWeekWIS[0], gpsWeekWIS[1]);
    Console.WriteLine("BDS周:{0:D},周内秒:{1:D}", bdsWeekWIS[0], bdsWeekWIS[1]);
    Console.WriteLine("*********************************");
    //Console.ReadLine();


    Console.Write("BDS周-周内秒 <--> GPS周-周内秒:");
    int[] gpsWeekWISFromBDS = bdsWeekWIS_gpsWeekWIS(bdsWeekWIS[0], bdsWeekWIS[1]);
    Console.WriteLine("GPS周:{0:D},周内秒:{1:D}", gpsWeekWISFromBDS[0], gpsWeekWISFromBDS[1]);
    Console.ReadLine();
}

5.运行结果

在这里插入图片描述

6.GPST、BDST与UTC时间的闰秒差

在这里插入图片描述

7.几大导航系统系统时间比较

在这里插入图片描述

  • 12
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值