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

时间:2011-07-07 08:54:52

标签: c# datetime gps gps-time

我有一台GPS设备可以向我的服务器发送包括GPS时间在内的一些物体 它以周数的形式出现,以秒为单位。

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

我找到this web page,这样做但我无法在c#windows app code中找到如何做到这一点。

示例数据:

GPS Week number 1643
GPS second into week 377505

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

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:1)

这适用于VB6

Dim dtt As Date
dtt = "6 / 1 / 1980"
dtt = DateAdd("d", (1837 * 7), dtt)
dtt = DateAdd("s", 129414, dtt)
1837年是gps周 129414是星期几