c语言utc时间转换北京时间_STM32开发 -- UTC、UNIX时间戳、北京时间之间的转换

本文介绍了如何在STM32开发中进行UTC时间转换为北京时间,以及UNIX时间戳与北京时间相互转换的方法。通过提供的C语言代码实现,包括UTC到任意时区时间的转换函数和UNIX时间戳与北京时间的转换函数。
摘要由CSDN通过智能技术生成

我碰到的问题,GPS上UTC时间转北京时间和STM32上UNIX时间戳转北京时间。

这部分之前讲RTC和GPS的时候有涉及到一部分。

具体的RTC如何得到UNIX时间戳,和GNRMC如何解析得到UTC时间可以参看一下。

参看:STM32开发 – RTC详解

参看:STM32开发 – GPS模块开发详解

扩展:C语言再学习 – 时间函数

这里主要看三者转换方法:

一、UTC时间转换为北京时间

参看:UTC时间转换为北京时间

时间类型结构体

//UTC时间信息

__packed typedef struct

{

uint16_t year;//年份

uint8_t month;//月份

uint8_t date;//日期

uint8_t hour; //小时

uint8_t min; //分钟

uint8_t sec; //秒钟

}nmea_time;

UTC时间转任意时区时间

其中,北京时间 = UTC time + 8 hours

void UTC_to_BJtime(nmea_time*utc_time, int8_ttimezone)

{

int year,month,day,hour;

int lastday = 0;//last day of this month

int lastlastday = 0;//last day of last month

year = utc_time->year; //utc time

month  = utc_time->month;

day = utc_time->date;

hour = utc_time->hour + timezone;

if(month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12){

lastday = 31;

if(month == 3){

if((year%400 == 0)||(year%4 == 0 && year%100 != 0))//if this is lunar year

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值