获取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

相关文章

Feign Client超时时间设置不生效的解决方法

《FeignClient超时时间设置不生效的解决方法》这篇文章主要为大家详细介绍了FeignClient超时时间设置不生效的原因与解决方法,具有一定的的参考价值,希望对大家有一定的帮助... 在使用Feign Client时,可以通过两种方式来设置超时时间:1.针对整个Feign Client设置超时时间

springboot+dubbo实现时间轮算法

《springboot+dubbo实现时间轮算法》时间轮是一种高效利用线程资源进行批量化调度的算法,本文主要介绍了springboot+dubbo实现时间轮算法,文中通过示例代码介绍的非常详细,对大家... 目录前言一、参数说明二、具体实现1、HashedwheelTimer2、createWheel3、n

Python获取中国节假日数据记录入JSON文件

《Python获取中国节假日数据记录入JSON文件》项目系统内置的日历应用为了提升用户体验,特别设置了在调休日期显示“休”的UI图标功能,那么问题是这些调休数据从哪里来呢?我尝试一种更为智能的方法:P... 目录节假日数据获取存入jsON文件节假日数据读取封装完整代码项目系统内置的日历应用为了提升用户体验,

微信公众号脚本-获取热搜自动新建草稿并发布文章

《微信公众号脚本-获取热搜自动新建草稿并发布文章》本来想写一个自动化发布微信公众号的小绿书的脚本,但是微信公众号官网没有小绿书的接口,那就写一个获取热搜微信普通文章的脚本吧,:本文主要介绍微信公众... 目录介绍思路前期准备环境要求获取接口token获取热搜获取热搜数据下载热搜图片给图片加上标题文字上传图片

Java实现时间与字符串互相转换详解

《Java实现时间与字符串互相转换详解》这篇文章主要为大家详细介绍了Java中实现时间与字符串互相转换的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、日期格式化为字符串(一)使用预定义格式(二)自定义格式二、字符串解析为日期(一)解析ISO格式字符串(二)解析自定义

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4

MySQL大表数据的分区与分库分表的实现

《MySQL大表数据的分区与分库分表的实现》数据库的分区和分库分表是两种常用的技术方案,本文主要介绍了MySQL大表数据的分区与分库分表的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有... 目录1. mysql大表数据的分区1.1 什么是分区?1.2 分区的类型1.3 分区的优点1.4 分

Mysql删除几亿条数据表中的部分数据的方法实现

《Mysql删除几亿条数据表中的部分数据的方法实现》在MySQL中删除一个大表中的数据时,需要特别注意操作的性能和对系统的影响,本文主要介绍了Mysql删除几亿条数据表中的部分数据的方法实现,具有一定... 目录1、需求2、方案1. 使用 DELETE 语句分批删除2. 使用 INPLACE ALTER T

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

Redis 中的热点键和数据倾斜示例详解

《Redis中的热点键和数据倾斜示例详解》热点键是指在Redis中被频繁访问的特定键,这些键由于其高访问频率,可能导致Redis服务器的性能问题,尤其是在高并发场景下,本文给大家介绍Redis中的热... 目录Redis 中的热点键和数据倾斜热点键(Hot Key)定义特点应对策略示例数据倾斜(Data S