2011-07-07 444 views
4

我有一個GPS設備,可以發送包括GPS時間在內的一些對象給我的服務器。
它以星期數的形式出現,數週到幾周。從GPS星期數,星期幾到日期時間轉換

我想將其轉換爲日期時間格式。我發現了一些代碼,但我發現的是如何將星期數轉換爲日期,不包括第二週到周。

我發現this web page,這是做的,但我不知道如何做到這一點在C#窗口的應用程序代碼。

的樣本數據:

GPS Week number 1643 
GPS second into week 377505 

這應該是2011/07/07 10:51:44

+1

引用的轉換器似乎嫌疑秒。例如,'0,60'和'0,61'都給出了'1980/01/06 00:01:00',但是在GPS時代之後的第一個閏秒直到1981/07/01。 – jjlin

回答

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; 
} 
+0

是的.i找到我的代碼中的錯誤..它從1980.1.1開始 – Ramah

+1

本身不是一個修正,但是爲將來的參考提示 - 來自GPS衛星的時間信號不包括[閏秒](http:///en.wikipedia.org/wiki/Leap_second),這意味着你從這個計算中得到的時間與標準UTC相差幾秒鐘。現在這個數字是16秒,但2015年6月將是17秒。 – Phlucious

0

這個工作在VB6

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

1837年是GPS周 129414是本週

相關問題