конвертировать из номера недели GPS, время недели в дату и время - PullRequest
5 голосов
/ 07 июля 2011

У меня есть устройство GPS, которое отправляет некоторые объекты, включая время GPS, на мой сервер.
Он приходит в формате номера недели, секунды в неделю.

Я хочу преобразовать это в формат даты и времени. Я нашел несколько кодов для этого, но все, что я нашел, это как конвертировать номер недели в дату, не считая второго в неделю.

Я нашел эту веб-страницу , которая делает это, но я не могу узнать, как это сделать в коде приложения c # windows.

Пример данных:

GPS Week number 1643
GPS second into week 377505

Это должно быть 2011/07/07 10:51:44.

Ответы [ 2 ]

7 голосов
/ 07 июля 2011

Если вам известен DateTime, представляющий неделю, просто позвоните в AddSeconds, чтобы найти нужный DateTime.

В соответствии с калькулятором, на который вы ссылались выше, неделя 1643, 377505 должна соответствовать 2011/07/0707:51:44, а не 10:51:44 (может быть, это смещение часового пояса?) Во всяком случае, следующий фрагмент даст вам тот же результат, что и калькулятор в ссылке, когда выбрано GMT - для разных часовых поясов,вам придется применить свои собственные смещения.

DateTime GetFromGps(int weeknumber, double seconds)
{
    DateTime datum = new DateTime(1980,1,6,0,0,0);
    DateTime week = datum.AddDays(weeknumber * 7);
    DateTime time = week.AddSeconds(seconds);
    return time;
}
1 голос
/ 23 марта 2015

Это работает в VB6

Dim dtt As Date
dtt = "6 / 1 / 1980"
dtt = DateAdd("d", (1837 * 7), dtt)
dtt = DateAdd("s", 129414, dtt)

1837 - неделя GPS 129414 - секунды недели

...