gps时由整周(7天)计数,与周内秒计数两部分组成。转换为utc时间可以从1980年1月6日0时,基本思路计算出总共的秒数,然后通过计算总秒数包含了多少整年,整年减掉后取余,计算年内多少整月,依次类推就可以计算出最后utc时刻的年月日时分秒.毫秒值了。
转换过程中需要主要的年中的闰年处理,还有GPS时与utc时的闰秒问题,如果是转换为北京时间要求时区的问题需要考虑。
闰年判定后,通过查表的方式将年的月份天数取出,减去总的秒数。
以上是gpstime转换为utc时间的部分c语言源码。注意:GPS时已经计过了一个周期(1024个整周),调用该函数时,默认传入的参数gpstime中,已经将1024加入到了ulTimeWeek中,已经将GPS闰秒从dTimeSec中减掉。图中需要确认的参数是timesec是时区参数,如果转换为utc时间,该参数为0;如果转换为北京时间,该参数为8。
c语言源代码还包含utc时间转换为gps时间,转换后的gpstime,包含了1024周,而不包含gps闰秒值。同时传入参数可以选择utc时间的所在时区值。
gps2utc c语言源代码下载地址:http://yunpan.cn/cmzqu99v7GQ35 (提取码:63a2)。