Конвертируйте метку времени UTC HHmmss.SSS в unix time в MATLAB - PullRequest
0 голосов
/ 21 февраля 2019

Мне нужно синхронизировать два датчика от UTC до времени Unix.Первый - это GPS, который выдает файл NMEA GPGGA, где временная метка UTC имеет формат «HHmmss.SSS».Например, "042803.00" - это "4:28:03" AM и ноль миллисекунд.

Второй датчик выдает время Unix без високосных секунд.

Есть ли функция MATLAB, которую я могуиспользовать?Меня особенно интересует решение, которое учитывает високосные секунды.

Мой первый подход заключается в преобразовании времени unix в utc:

sensor=datetime(unix_timestamp,'ConvertFrom','posixtime')

К сожалению, аргумент posixtime не поддерживает високосные секунды.Затем я беру метку времени utc из файла NMEA:

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 без високосных секунд?

Теперь я хочу перевести время GPS в время Unix с помощью:

unix_time_gps=posixtime(gps)

Thisне работает, поскольку posixtime не учитывает високосные секунды.

Как мне этого добиться?

Спасибо

...