7

我有一个 GPS 设备,可以向我的服务器发送一些对象,包括 GPS 时间。
它以周数的格式出现,以秒为单位。

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

我找到了这个网页,它正在这样做,但我无法在 c# windows 应用程序代码中找到如何做到这一点。

样本数据:

GPS Week number 1643
GPS second into week 377505

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

4

2 回答 2

10

如果您知道代表一周的 DateTime,只需调用 AddSeconds 即可找到您需要的 DateTime。

根据您在上面链接的计算器,第 1643 周,377505 应该等于 2011/07/07 07:51:44,而不是 10:51:44(也许是时区偏移?)无论如何,以下代码段将给出you what you the same result as the calculator in the link when GMT is selected - for different timezones, you'll have to apply your own offsets.

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;
}
于 2011-07-07T08:57:45.553 回答
1

这适用于VB6

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

1837 是 gps 周 129414 是一周中的秒数

于 2015-03-23T13:23:41.663 回答