我需要将两个传感器从UTC同步到Unix时间。第一个是产生NMEA GPGGA文件的GPS,其中UTC时间戳的格式为“ HHmmss.SSS”。例如,“ 042803.00”是“ 4:28:03”上午零毫秒。
第二个传感器产生的unix时间没有leap秒。
有没有可以使用的MATLAB函数?我对尊重leap秒的解决方案特别感兴趣。
我的第一种方法是将unix时间转换为utc:
sensor=datetime(unix_timestamp,'ConvertFrom','posixtime')
不幸的是,参数posixtime不支持leap秒。然后,我从NMEA文件中获取utc时间戳:
gps=datetime(utc_timestamp,'InputFormat','HHmmss.SSS','TimeZone','UTC')
现在,由于我在NMEA协议中没有任何日,年,月,因此我从unix_timestamp中提取它
gps.Day=sensor.Day
gps.Month=sensor.Month
gps.Year=sensor.Year
任何想法如何做得更好? 如果我从Unix时间戳中获取年,月,日而没有leap秒,那会有什么风险?
现在我想通过以下方式将gps时间转换为unix时间:
unix_time_gps=posixtime(gps)
这不起作用,因为posixtime不遵守leap秒。
我该如何实现?
谢谢