很開心樓主開始了第四個日誌的書寫,也希望大家能留言鼓勵下,也是能夠這枯燥的生活一些激情吧。另外樓主說明下,樓主爲了單點定位才學tk的。所以可能會按照自己需要的路線瞭解TK,大家如果有什麼更好的經驗過程,也希望能分享一下吧~國內的學術環境樓主不多做評價。
在這之前先簡單的介紹先TK中定義的時間常量(TimeConstants.hpp)
const double MJD_TO_JD = 2400000.5; // 簡化儒略日和儒略日轉換常熟
const long MJD_JDAY = 2400001L; //這個暫不明白有什麼用
const long GPS_EPOCH_JDAY = 2444245L; //GPS時間系統起始曆元對應儒略日(1980.1.6)源文件中註釋爲1980-1-1
const long GPS_EPOCH_MJD = 44244L; //GPS時間系統起始曆元對應簡化儒略日
const long UNIX_MJD = 40587L; //Unix時間戳時期曆元對應簡化儒略日(1970.1.1)
const long HALFWEEK = 302400L; //GPS周對應秒的一半
const long FULLWEEK = 604800L; //GPS周對應的秒 7*24*3600
const long WEEK_PER_EPOCH = 1024L; //1024周(即7168天)爲GPS時間系統一循環週期
//一天和秒轉換常數
const long SEC_PER_DAY = 86400L;
const double DAY_PER_SEC = 1.0/SEC_PER_DAY;
//秒和毫秒轉換常數
const long MS_PER_SEC = 1000L;
const double SEC_PER_MS = 1.0/MS_PER_SEC;
//毫秒和一天轉換常熟
const long MS_PER_DAY = MS_PER_SEC * SEC_PER_DAY;
const double DAY_PER_MS = 1.0/MS_PER_DAY;
//z計數與一天、一週的轉換常數,z計數週期爲1.5s(參考P碼的產生)
const long ZCOUNT_PER_DAY = 57600L;
const double DAY_PER_ZCOUNT = 1.0/ZCOUNT_PER_DAY;
const long ZCOUNT_PER_WEEK = 403200L;
const double WEEK_PER_ZCOUNT = 1.0/ZCOUNT_PER_WEEK;
汗,最後一個真是難倒樓主了。接下來撿重點講吧,commontime存儲的形式是天、毫秒、小數秒(注意小時秒的有效範圍0~0.001)這裏沒明白爲什麼要弄個毫秒去存儲,不過幸好所有的接口函數都是秒的,也就是說除非你直接調用commontime對象的毫秒對象,否則你所執行的操作都會是基於秒的。還真是不好說啊~~
直白點吧,所有函數參數列表中表示秒的參數單位都是秒,不是毫秒
例如 CommonTime& CommonTime::addSeconds( long seconds ),記住這個地方你輸入的seconds 變量是秒,不是毫秒。真不明白爲嘛要設計個毫秒進來。
所有函數返回的表示秒的參數單位也是秒
例如 double CommonTime::getSecondOfDay(),返回的double是多少秒。
不過有一個函數asstring()輸出的秒部分單位是毫秒。我想大概大家能理解了吧,實在不行就去看看源碼吧,so easy O(∩_∩)O哈!
關於重載要說的就是兩個CommonTime對象重載 包括: -,==,!=,<,>,<=,>=
最後說下私有 normalize是檢查 CommonTime對象變量成員範圍是否合法的私有函數。
OK~講的可能不太好,希望下一個能夠給力點吧!