获取GPS报文数据/北斗报文数据UTC时间转为北京时间

2024-01-16 05:20

本文主要是介绍获取GPS报文数据/北斗报文数据UTC时间转为北京时间,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

GPS系统时间与UTC时间不同,差了一个闰秒,因为UTC时间是可以调整的,而GPS时间是连续的,闰秒数在下行的导航电文中有反应。

北京时=GPS时+8小时+闰秒

GPGGA和GPRMC中本身已经将GPS时间转换为UTC时间了,所以该时间与北京时间只差8小时。

例如:GPS时间显示为2月27日0时,北京时为2月27日8时。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>typedef struct UTCtime
{int year;int month;int day;int hour;int min;int sec;
}UTC_TIME;UTC_TIME utctime;//UTC时间转换为北京时间
void UTCToBeijing(unsigned int year,unsigned char month,unsigned char day,unsigned int hour,const unsigned char minute,const unsigned char second)
{hour += 8;if(1==month||3==month||5==month||7==month||8==month||10==month||12==month)//1,3,5,7,8,9,12月每月为31天{if(24 <= hour){hour -= 24;day += 1;//如果超过24小时,减去24小时,后再加上一天if(day > 31){day -= 31;month += 1;}//如果超过31一天,减去31天,后加上一个月}}else if(4==month||6==month||9==month||11==month)//4,6,9,11月每月为30天{if(24 <= hour){hour -= 24;day += 1;//如果超过24小时,减去24小时,后再加上一天if(30 < day){day -= 30;month += 1;}//如果超过30一天,减去30天,后加上一个月}}else//剩下为2月,闰年为29天,平年为28天{if(24 <= hour){hour -= 24;day += 1;if((0 == year%400)||(0 == year%4 && 0 != year%100))//判断是否为闰年,年号能被400整除或年号能被4整除,而不能被100整除为闰年{if(29 < day){day -= 29;month += 1;}}//为闰年else{if(28 < day){day -= 28;month += 1;}}//为平年}}if(12 < month){month-=12;year+=1;}else;utctime.year=year;utctime.month=month;utctime.day=day;utctime.hour=hour;utctime.min=minute;utctime.sec=second;
}int main()
{/*测试GPS转换时间*/utctime.year=2020;utctime.month=2;utctime.day=28;utctime.hour=19;utctime.min=25;utctime.sec=25;printf("转换前时间:%d.%d.%d %d:%d:%d\n",utctime.year,utctime.month,utctime.day,utctime.hour,utctime.min,utctime.sec);UTCToBeijing(utctime.year,utctime.month,utctime.day,utctime.hour,utctime.min,utctime.sec);printf("转换后时间:%d.%d.%d %d:%d:%d\n",utctime.year,utctime.month,utctime.day,utctime.hour,utctime.min,utctime.sec);
}	

运行结果:

 

这篇关于获取GPS报文数据/北斗报文数据UTC时间转为北京时间的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/611447

相关文章

Java controller接口出入参时间序列化转换操作方法(两种)

《Javacontroller接口出入参时间序列化转换操作方法(两种)》:本文主要介绍Javacontroller接口出入参时间序列化转换操作方法,本文给大家列举两种简单方法,感兴趣的朋友一起看... 目录方式一、使用注解方式二、统一配置场景:在controller编写的接口,在前后端交互过程中一般都会涉及

使用Java将各种数据写入Excel表格的操作示例

《使用Java将各种数据写入Excel表格的操作示例》在数据处理与管理领域,Excel凭借其强大的功能和广泛的应用,成为了数据存储与展示的重要工具,在Java开发过程中,常常需要将不同类型的数据,本文... 目录前言安装免费Java库1. 写入文本、或数值到 Excel单元格2. 写入数组到 Excel表格

python处理带有时区的日期和时间数据

《python处理带有时区的日期和时间数据》这篇文章主要为大家详细介绍了如何在Python中使用pytz库处理时区信息,包括获取当前UTC时间,转换为特定时区等,有需要的小伙伴可以参考一下... 目录时区基本信息python datetime使用timezonepandas处理时区数据知识延展时区基本信息

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

SpringMVC 通过ajax 前后端数据交互的实现方法

《SpringMVC通过ajax前后端数据交互的实现方法》:本文主要介绍SpringMVC通过ajax前后端数据交互的实现方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价... 在前端的开发过程中,经常在html页面通过AJAX进行前后端数据的交互,SpringMVC的controll

SpringBoot整合mybatisPlus实现批量插入并获取ID详解

《SpringBoot整合mybatisPlus实现批量插入并获取ID详解》这篇文章主要为大家详细介绍了SpringBoot如何整合mybatisPlus实现批量插入并获取ID,文中的示例代码讲解详细... 目录【1】saveBATch(一万条数据总耗时:2478ms)【2】集合方式foreach(一万条数

python获取网页表格的多种方法汇总

《python获取网页表格的多种方法汇总》我们在网页上看到很多的表格,如果要获取里面的数据或者转化成其他格式,就需要将表格获取下来并进行整理,在Python中,获取网页表格的方法有多种,下面就跟随小编... 目录1. 使用Pandas的read_html2. 使用BeautifulSoup和pandas3.

SpringBoot UserAgentUtils获取用户浏览器的用法

《SpringBootUserAgentUtils获取用户浏览器的用法》UserAgentUtils是于处理用户代理(User-Agent)字符串的工具类,一般用于解析和处理浏览器、操作系统以及设备... 目录介绍效果图依赖封装客户端工具封装IP工具实体类获取设备信息入库介绍UserAgentUtils

Pandas统计每行数据中的空值的方法示例

《Pandas统计每行数据中的空值的方法示例》处理缺失数据(NaN值)是一个非常常见的问题,本文主要介绍了Pandas统计每行数据中的空值的方法示例,具有一定的参考价值,感兴趣的可以了解一下... 目录什么是空值?为什么要统计空值?准备工作创建示例数据统计每行空值数量进一步分析www.chinasem.cn处

如何使用 Python 读取 Excel 数据

《如何使用Python读取Excel数据》:本文主要介绍使用Python读取Excel数据的详细教程,通过pandas和openpyxl,你可以轻松读取Excel文件,并进行各种数据处理操... 目录使用 python 读取 Excel 数据的详细教程1. 安装必要的依赖2. 读取 Excel 文件3. 读