Библиотека представления времени GPS

Я ищу библиотеку Java, которая обрабатывает преобразование в/из GPS Time.

Время GPS имеет эпоху 6 января 1980 года и не имеет секунд прыжка, поэтому оно отличается от более стандартных представлений времени. Вот соответствующее описание из Википедии:

В то время как большинство часов синхронизируются с координированным универсальным временем (UTC), атомные часы на спутниках устанавливаются на время GPS. Разница в том, что время GPS не корректируется в соответствии с вращением Земли, поэтому оно не содержит секунд прыжка или других поправок, которые периодически добавляются в UTC. Время GPS было установлено в соответствии с Согласованным универсальным временем (UTC) в 1980 году, но с тех пор оно расходится. Отсутствие поправок означает, что время GPS остается постоянным смещением с Международным атомным временем (TAI) (TAI - GPS = 19 секунд). Периодические поправки выполняются на бортовых часах, чтобы исправить релятивистские эффекты и синхронизировать их с наземными часами.

GPS-навигационное сообщение включает в себя разницу между временем GPS и UTC, которое по состоянию на 2009 год составляет 15 секунд из-за второго прыжка, добавленного в UTC 31 декабря 2008 года. Приемники вычитают это смещение от времени GPS для расчета UTC и конкретных значений часового пояса, Новые GPS-устройства могут не показывать правильное время UTC до получения сообщения UTC offset. Поле смещения GPS-UTC может вмещать 255 секундных секунд (восемь бит), которые, учитывая текущую скорость изменения вращения Земли (с одним прыжком в секунду, введенным примерно каждые 18 месяцев), должны быть достаточными, чтобы продлиться примерно до 2300 года.

В отличие от формата года, месяца и дня григорианского календаря, дата GPS выражается как номер недели и число секунд в неделю. Номер недели передается в виде десятибитового поля в навигационных сообщениях C/A и P (Y), и поэтому он становится равным нулю каждые 1024 недели (19,6 года). Начальная нота GPS началась в 00:00:00 UTC (00:00:19 TAI) 6 января 1980 года, а номер недели снова стал нулевым в 23:59:47 UTC 21 августа 1999 года (00: 00: 19 TAI от 22 августа 1999 года). Чтобы определить текущую григорианскую дату, GPS-приемник должен быть снабжен приблизительной датой (до 3584 дней) для правильного перевода сигнала даты GPS. Для решения этой проблемы модернизированное навигационное GPS-сообщение использует 13-битовое поле, которое повторяется каждые 8 ​​192 недели (157 лет), таким образом, продолжающееся до 2137 года (157 лет после нулевой недели GPS).

Мне бы не пришлось сворачивать самостоятельно; Я ничего не вижу в времени Джоды, указывая, что он может обрабатывать даты, закодированные GPS. Есть ли способ расширить его?

Ответ 1

Этот веб-сайт, похоже, делает переход на лету в javascript. текст ссылки

Ответ 2

JSR-310 имеет классы TAIInstant и UTCInstant, которые помогли бы решить эту проблему (поскольку шкала времени GPS является вариацией TAI). Они расположены в проекте ThreeTen-Extra.

Ответ 3

Можете ли вы рассказать о том, что вы пытаетесь сделать?

Если вы читаете данные из GPSr, поток NMEA должен быть скорректирован для дрейфа UTC в соответствии с вашей цитатой и подтвержден this.