很开心楼主开始了第四个日志的书写,也希望大家能留言鼓励下,也是能够这枯燥的生活一些激情吧。另外楼主说明下,楼主为了单点定位才学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~讲的可能不太好,希望下一个能够给力点吧!