075 RTKlib中關於結構體gtime t

2021-09-11 10:45:24 字數 2068 閱讀 1541

rtklib中關於結構體gtime_t的一些記錄:

該結構體的定義:

typedef

struct

gtime_t;

其實該結構體儲存的是自2023年1月1日0時0分0秒至目標時間的秒數time及不足整秒sec,結構體time_t為乙個64位的整型。下面給出乙個例子:

int

main()

輸出結果:

另外,還需記錄一下epoch2time函式,定義如下:

extern gtime_t epoch2time

(const

double

*ep)

; gtime_t time=

;int days,sec,year=

(int

)ep[0]

,mon=

(int

)ep[1]

,day=

(int

)ep[2]

;if(year<

1970

||2099

12return time;

/* leap year if year%4==0 in 1901-2099 */

days=

(year-

1970)*

365+

(year-

1969)/

4+doy[mon-1]

+day-2+

(year%4==

0&&mon>=3?

1:0)

; sec=

(int

)floor

(ep[5]

);time.time=

(time_t)days*

86400+(

int)ep[3]

*3600+(

int)ep[4]

*60+sec;

time.sec=ep[5]

-sec;

return time;

}

著重說明一下天數的求解,

days=

(year-

1970)*

365+

(year-

1969)/

4+doy[mon-1]

+day-2+

(year%4==

0&&mon>=3?

1:0)

;

先舉乙個例子,例如我們要求2023年1月2日0時0分10秒到2023年1月1日0時0分0秒的秒數,1月2日的年積日為2,但是我們求解時肯定是1月2日之前那一天的年積日換算成秒數,然後加上1月2日經過的秒數。

那麼我們求解某一時刻a至起點所經過的秒數,所要求解的年積日就是a前一天的年積日。所以對於doy[mon-1]+day-2就比較容易理解。例如我們要知道2.11至起點的秒數,那我們要求的年積日是2.10的,doy(2-1)+11-2=41。

對於(year%4==0&&mon>=3?1:0),當這一年為閏年且月份大於3時,得出的結果等於1,即閏年2月之後的某一天要加一天。

對於(year-1970)*365+(year-1969)/4,當求解2023年(閏年)的時間時,(year%4==0&&mon>=3?1:0)起到加一天的作用,當求解2023年的時間時,(year-1970)*365將2023年當成365天計算了,(year-1969)/4補充了這一天。對於其他年份也是如此。值得注意的是,time.time=(time_t)days*86400+(int)ep[3]*3600+(int)ep[4]*60+sec;days進行了取整。

關於結構體

關鍵字struct表示定義的是結構體的資料型別,緊隨其後的識別符號student是結構體型別名。花括號中依次列舉該型別的每個成員資料型別及其名稱,每個成員的資料型別可以是基本資料型別或者自定義資料型別,但是不能重名。結構的成員也成為域。結構體型別的定義以乙個分號結束。由於資料型別僅是為變數分配儲存空...

關於結構體

結構不可以定義無參的建構函式,缺省內置乙個 結構只能定義有參的建構函式,通過建構函式初始所有成員變數 結構可以不使用操作符new來例項化,但是在使用該結構時必須先給所有成員初始化 結構不能繼承,也不能被繼承 結構可以實現介面 結構不能存在受保護的成員,虛成員還有抽象成員 1.結構是值型別的,不是引用...

112 RTKLIB中關於dcb檔案讀取的問題

關於rtklib讀取dcb檔案的問題,做如下幾點記錄 1 rtklib並不是只能讀取乙個dcb檔案,輸入dcb檔案路徑f test dcb就可以讀取該路徑下的所有dcb檔案 2 如果該資料夾下有很多不同日期的dcb檔案,那麼輸入f test y m.dcb就可以設定要選擇的相應時間的dcb檔案,但是...