2011-07-07 443 views
4

我有一个GPS设备,可以发送包括GPS时间在内的一些对象给我的服务器。
它以星期数的形式出现,数周到几周。从GPS星期数,星期几到日期时间转换

我想将其转换为日期时间格式。我发现了一些代码,但我发现的是如何将星期数转换为日期,不包括第二周到周。

我发现this web page,这是做的,但我不知道如何做到这一点在C#窗口的应用程序代码。

的样本数据:

GPS Week number 1643 
GPS second into week 377505 

这应该是2011/07/07 10:51:44

+1

引用的转换器似乎嫌疑秒。例如,'0,60'和'0,61'都给出了'1980/01/06 00:01:00',但是在GPS时代之后的第一个闰秒直到1981/07/01。 – jjlin

回答

7

如果您知道表示星期的DateTime,只需调用AddSeconds来查找您需要的DateTime。

根据上面链接到的计算器,第1643周,377505应该等同于2011/07/07 07: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; 
} 
+0

是的.i找到我的代码中的错误..它从1980.1.1开始 – Ramah

+1

本身不是一个修正,但是为将来的参考提示 - 来自GPS卫星的时间信号不包括[闰秒](http:///en.wikipedia.org/wiki/Leap_second),这意味着你从这个计算中得到的时间与标准UTC相差几秒钟。现在这个数字是16秒,但2015年6月将是17秒。 – Phlucious

0

这个工作在VB6

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

1837年是GPS周 129414是本周

相关问题