我有一个 GPS 设备,可以向我的服务器发送一些对象,包括 GPS 时间。
它以周数的格式出现,以秒为单位。
我想将其转换为日期时间格式。我找到了一些代码,但我发现的只是如何将周数转换为日期,不包括第二周。
我找到了这个网页,它正在这样做,但我无法在 c# windows 应用程序代码中找到如何做到这一点。
样本数据:
GPS Week number 1643
GPS second into week 377505
那应该是2011/07/07 10:51:44
。
如果您知道代表一周的 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;
}
这适用于VB6
Dim dtt As Date
dtt = "6 / 1 / 1980"
dtt = DateAdd("d", (1837 * 7), dtt)
dtt = DateAdd("s", 129414, dtt)
1837 是 gps 周 129414 是一周中的秒数