Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将GPS周数、周时间转换为日期时间_C#_Datetime_Gps_Gps Time - Fatal编程技术网

C# 将GPS周数、周时间转换为日期时间

C# 将GPS周数、周时间转换为日期时间,c#,datetime,gps,gps-time,C#,Datetime,Gps,Gps Time,我有一个GPS设备,可以将一些对象(包括GPS时间)发送到我的服务器。 它以周数的形式出现,以秒为单位 我想把它转换成日期时间格式。我找到了一些代码,但我只找到了如何将周数转换为日期,而不包括第二周 我找到了,但在c#windows应用程序代码中找不到如何做到这一点 样本数据: GPS Week number 1643 GPS second into week 377505 这应该是2011/07/07 10:51:44如果您知道代表一周的日期时间,只需拨打AddSeconds以查找所需的日期

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

我想把它转换成日期时间格式。我找到了一些代码,但我只找到了如何将周数转换为日期,而不包括第二周

我找到了,但在c#windows应用程序代码中找不到如何做到这一点

样本数据:

GPS Week number 1643
GPS second into week 377505

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

如果您知道代表一周的日期时间,只需拨打AddSeconds以查找所需的日期时间

根据您上面链接的计算器,第1643周、第377505周应等同于2011/07/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;
}
这在VB6中工作

Dim dtt As Date
dtt = "6 / 1 / 1980"
dtt = DateAdd("d", (1837 * 7), dtt)
dtt = DateAdd("s", 129414, dtt)
1837年是全球定位系统周
129414是一周中的秒数

是的。我在代码中发现了错误。它是从1980年开始的。1.1这本身不是一个更正,而是一个供将来参考的注释-GPS卫星的时间信号不包括在内,这意味着您的计算时间将与标准UTC相差几秒。现在这个数字是16秒,但到2015年6月将是17秒。为什么时间从(1980,1,6)开始@Phlucious:那么我应该在结果中加上闰秒来确定最终UTC吗?@basilisk我知道他们选择了1980-01-06而不是1980-01-01,因为那是一个周日,GPS时间是按周和秒来跟踪的,从周日凌晨0:00:00开始。但为什么是1980年?我想大概是在导航星出现的时候,但我不确定。回复:增加闰秒-是的,只要2017年夏季之后,您将在GPST上增加18秒以获得UTC。有关闰秒及其添加日期的表格,请参阅wiki页面。他们将其保持在最新状态。引用的转换器似乎可疑。例如,
0,60
0,61
都给出了
1980/01/06 00:01:00
,但GPS纪元后的第一个闰秒直到1981/07/01才出现。转换器实际上只是在GPS时间和拖/周之间进行转换。它不在乎闰秒。专栏标题错了。