从GPS周数,周时间到日期时间转换

Ram*_*mah 5 c# datetime gps gps-time

我有一个GPS设备,可以将一些物体(包括GPS时间)发送到我的服务器.
它以周数的形式出现,以秒为单位.

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

我找到了这个网页,但是我无法在c#windows app代码中找到如何做到这一点.

样本数据:

GPS Week number 1643
GPS second into week 377505
Run Code Online (Sandbox Code Playgroud)

那应该是2011/07/07 10:51:44.

Zom*_*eep 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;
}
Run Code Online (Sandbox Code Playgroud)

  • 本身不是更正,而是将来的注意事项-来自GPS卫星的时间信号不包括[le秒](http://en.wikipedia.org/wiki/Leap_second),这意味着您从此计算中得到的时间与标准UTC会有几秒钟的距离。目前该数字为16秒,但到2015年6月将为17秒。 (2认同)