GNSS时间转换为UTC+8时间

GNSS时间转换为UTC+8时间

NMEA输出的GNRMC数据中,时间信息是格林威治时间,和我们东八区的时间相差八小时,要将其转换为东八区的时间,可以用以下方法:

#include "math.h"
#include "stdbool.h"
#include "stdint.h"
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "time.h"
#include <sys/time.h>

// 参数举例 t.exe 2020-02-28 18
int main(int argc, char *argv[])
{
    if(argc != 3)
    {
        return -1;
    }

    int year, month, mday;
    int hour;

    sscanf(argv[1], "%04d-%02d-%02d", &year, &month, &mday);
    sscanf(argv[2], "%02d", &hour);
    printf("input: %02d-%02d-%02d %02d:00:00 \r\n", year, month, mday, hour);

    char timeString[32];
    struct tm *pTm;
    
    struct tm now;
    now.tm_year = year - 1900;
    now.tm_mon = month - 1;
    now.tm_mday = mday;
    now.tm_hour = hour;
    now.tm_min = 0;
    now.tm_sec = 0;

    time_t nowSec = mktime(&now);
    printf("Secs : %d\r\n", nowSec);

    pTm = localtime(&nowSec);
    strftime(timeString, sizeof(timeString), "%Y-%m-%d %H:%M:%S", pTm);
    printf("UTC+0: %s\r\n", timeString);

    nowSec += 3600 * 8;   //加上8小时的总秒数
    pTm = localtime((time_t*)&nowSec);
    (void)pTm;
    strftime(timeString, sizeof(timeString), "%Y-%m-%d %H:%M:%S", pTm);
    printf("UTC+8: %s\r\n", timeString);

    return 0;
}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值