2014-11-03 76 views
1

我看過很多使用time_t的例子,但是timestamp_t讓我感到困惑...... 在我們需要打印出GPS數據的地方做一個任務,GPS設備返回一個類型爲timestamp_t的時間戳和一個紀元時間。我曾嘗試使用gmtime()來轉換和strftime(),但沒有任何工作在該類型上。它一直告訴我,如果我嘗試使用它們,它不能將timestamp_t *轉換爲time_t。如何將timestamp_t轉換爲實時?

任何知道任何可以將timestamp_t轉換爲人類可讀時間的函數?

感謝

+1

你從什麼庫獲取timestamp_t? – 2014-11-03 06:52:29

+0

您需要按照D'Nabre的說法正確描述'timestamp_t',我建議您查看相應庫的文檔。 – twid 2014-11-03 07:02:10

+1

如果是來自gpsd的timestamp_t,它只是一個time_t,在UTC中表示爲double(是的,這太瘋狂了,但它記錄的是)。應該是一個簡單的(如果不準確)轉換爲time_t,並且從那裏輕鬆完成。 – 2014-11-03 07:18:35

回答

1

本網站enter link description here表示它是一個Unix時間戳和小數部分。假設這意味着小數點左邊的數字是自1970年1月1日以來的秒數,「十進制」分量是一秒的小數部分,則可以去掉整數分量並使用ctime():

time_t seconds; 
timestamp_t ts = 1415000462.999000; 

seconds = (time_t) timestamp_t; 

printf("Time: %s\n", ctime(&seconds)); 

當然,這忽略了第二的小數部分,但 你應該能夠處理,很容易。

+0

使用你的例子似乎使程序掛在ctime()調用 – 2014-11-03 09:26:53

+0

沒關係它的工作,非常感謝 – 2014-11-03 15:32:59

相關問題