首页 时间转换源代码--GPS定位程序

时间转换源代码--GPS定位程序

举报
开通vip

时间转换源代码--GPS定位程序时间转换源代码--GPS定位程序 #ifndef __TIMECONVERT_H #define __TIMECONVERT_H const long _MINUTE_IN_SECOND = 60L; const long _HOUR_IN_MINUTE = 60L; const long _DAY_IN_HOUR = 24L; const long _WEEK_IN_DAY = 7L; const long _HOUR_IN_SECOND = _HOUR_IN_MINUTE * _MINUTE_I...

时间转换源代码--GPS定位程序
时间转换源代码--GPS定位程序 #ifndef __TIMECONVERT_H #define __TIMECONVERT_H const long _MINUTE_IN_SECOND = 60L; const long _HOUR_IN_MINUTE = 60L; const long _DAY_IN_HOUR = 24L; const long _WEEK_IN_DAY = 7L; const long _HOUR_IN_SECOND = _HOUR_IN_MINUTE * _MINUTE_IN_SECOND; const long _DAY_IN_SECOND = _DAY_IN_HOUR * _HOUR_IN_SECOND; const long _WEEK_IN_SECOND = _WEEK_IN_DAY * _DAY_IN_SECOND; typedef struct tagCOMMONTIME { unsigned short year; /*unsigned short month; unsigned short day; unsigned short hour; unsigned short minute;*/ unsigned char month; unsigned char day; unsigned char hour; unsigned char minute; double second; } COMMONTIME;//通用时 typedef COMMONTIME *PCOMMONTIME; typedef struct tagTOD { long sn; double tos; } TOD; typedef TOD *PTOD; typedef struct tagJULIANDAY { long day; TOD tod; } JULIANDAY;//儒略时 typedef JULIANDAY *PJULIANDAY; typedef struct tagMJulianDay { long day; TOD tod; } MJulianDay;//简化儒略日 typedef MJulianDay *PMJulianDay; typedef struct tagTOW { long sn; double tos; } TOW; typedef TOW *PTOW; typedef struct tagGPSTIME { int wn; TOW tow; } GPSTIME;//GPS时 typedef GPSTIME *PGPSTIME; typedef struct tagDOY { unsigned short year; unsigned short day; TOD tod; } DOY; typedef DOY *PDOY; void CommonTimeToJulianDay (PCOMMONTIME pct, PJULIANDAY pjd); void JulianDayToCommonTime (PJULIANDAY pjd, PCOMMONTIME pct); void JulianDayToGPSTime (PJULIANDAY pjd, PGPSTIME pgt); void GPSTimeToJulianDay (PGPSTIME pgt, PJULIANDAY pjd); void CommonTimeToGPSTime (PCOMMONTIME pct, PGPSTIME pgt); void GPSTimeToCommonTime (PGPSTIME pgt, PCOMMONTIME pct); void CommonTimeToDOY (PCOMMONTIME pct, PDOY pdoy); void DOYToCommonTime (PDOY pdoy, PCOMMONTIME pct); void GPSTimeToDOY (PGPSTIME pgt, PDOY pdoy); void DOYToGPSTime (PDOY pdoy, PGPSTIME pgt); void JulianDayToDOY (PJULIANDAY pjd, PDOY pdoy); void DOYToJulianDay (PDOY pdoy, PJULIANDAY pjd); double GetTimeDelta (PJULIANDAY pjd1, PJULIANDAY pjd2); void SetTimeDelta (PJULIANDAY pjdNew, PJULIANDAY pjdOld, double dDelta); #endif 源文件: #include "TimeConvert.h" #include "stdlib.h" double FRAC(double morigin) { return morigin-long(morigin); } double mod(double a,int b) { return (a-b*long(a/b)); } void CommonTimeToJulianDay(PCOMMONTIME pct, PJULIANDAY pjd) { int m; int y; double ut; ut = pct->hour + pct->minute/(double)_HOUR_IN_MINUTE + pct->second/(double)_HOUR_IN_SECOND; if (pct->month <= 2) { y = pct->year - 1; m = pct->month + 12; } else { y = pct->year; m = pct->month; } pjd->day = (long)(365.25*y) + (long)(30.6001*(m+1)) + pct->day + (long)(ut/24 + 1720981.5); pjd->tod.sn = ((pct->hour+12)%_DAY_IN_HOUR)*_HOUR_IN_SECOND + pct->minute*_MINUTE_IN_SECOND + (long)pct->second; pjd->tod.tos = pct->second - (long)pct->second; } void JulianDayToCommonTime (PJULIANDAY pjd, PCOMMONTIME pct) { int a,b,c,d,e; double JD; JD=pjd->day+(pjd->tod.sn+pjd->tod.tos)/_DAY_IN_SECOND; a=static_cast(JD+0.5); b=a+1537; c=static_cast((b-122.1)/365.25); d=static_cast(365.25*c); e=static_cast((b-d)/30.6001); /*pct->day=short(b-d-(long)(30.6001*e)+FRAC(JD+0.5)); pct->month=short(e-1-12*(long)(e/14)); pct->year=short(c-4715-(long)((7+pct->month)/10)); pct->hour=(short)(pjd->tod.sn/_HOUR_IN_SECOND)+12; if(pct->hour>=24) pct->hour-=24; pct->minute=(short)((pjd->tod.sn%_HOUR_IN_SECOND)/_MINUTE_IN_SECOND);*/ pct->day=b-d-(long)(30.6001*e)+FRAC(JD+0.5); pct->month=e-1-12*(long)(e/14); pct->year=c-4715-(long)((7+pct->month)/10); pct->hour=pjd->tod.sn/_HOUR_IN_SECOND+12; if(pct->hour>=24) pct->hour-=24; pct->minute=(pjd->tod.sn%_HOUR_IN_SECOND)/_MINUTE_IN_SECOND; pct->second=(pjd->tod.sn%_HOUR_IN_SECOND)%_MINUTE_IN_SECOND+pjd->tod.tos; } void JulianDayToGPSTime (PJULIANDAY pjd, PGPSTIME pgt) double JD; JD=pjd->day+(pjd->tod.sn+pjd->tod.tos)/_DAY_IN_SECOND; pgt->wn=int((JD-2444244.5)/7); //double JDd; //JDd=JD-2444244.5; //pgt->tow.sn=long(mod((JD-2444244.5),7)*_DAY_IN_SECOND); //pgt->tow.tos=mod((JD-2444244.5),7)*_DAY_IN_SECOND // -long(mod((JD-2444244.5),7)*_DAY_IN_SECOND); pgt->tow.sn=long((JD-2444244.5-pgt->wn*7)*_DAY_IN_SECOND); pgt->tow.tos=pjd->tod.tos; } void GPSTimeToJulianDay (PGPSTIME pgt, PJULIANDAY pjd) { double JD; JD=pgt->wn*7+(pgt->tow.sn+pgt->tow.tos)/86400+2444244.5; pjd->day=long(JD); pjd->tod.sn=long((JD-long(JD))*_DAY_IN_SECOND); //pjd->tod.tos=(JD-long(JD))*_DAY_IN_SECOND-long((JD-long(JD))*_DAY_IN_SECOND); pjd->tod.tos=pgt->tow.tos; } void CommonTimeToGPSTime (PCOMMONTIME pct, PGPSTIME pgt) { PJULIANDAY pjd; pjd=(PJULIANDAY)malloc(sizeof(JULIANDAY)); CommonTimeToJulianDay(pct,pjd); JulianDayToGPSTime (pjd,pgt); free(pjd); } void GPSTimeToCommonTime (PGPSTIME pgt, PCOMMONTIME pct) { PJULIANDAY pjd; pjd=(PJULIANDAY)malloc(sizeof(JULIANDAY)); GPSTimeToJulianDay (pgt, pjd); JulianDayToCommonTime (pjd, pct); free(pjd); } void CommonTimeToDOY (PCOMMONTIME pct, PDOY pdoy) { PCOMMONTIME pcto; pcto=(PCOMMONTIME)malloc(sizeof(COMMONTIME)); pcto->year=pct->year; pcto->month=1; pcto->day=1; pcto->hour=0; pcto->minute=0; pcto->second=0; PJULIANDAY pjdo; pjdo=(PJULIANDAY)malloc(sizeof(JULIANDAY)); double JD,JDO; CommonTimeToJulianDay(pcto,pjdo); JDO=pjdo->day+(pjdo->tod.sn+pjdo->tod.tos)/_DAY_IN_SECOND; PJULIANDAY pjd; pjd=(PJULIANDAY)malloc(sizeof(JULIANDAY)); CommonTimeToJulianDay(pct,pjd); JD=pjd->day+(pjd->tod.sn+pjd->tod.tos)/_DAY_IN_SECOND; pdoy->day=short(JD-JDO+1); pdoy->year=pct->year; pdoy->tod.sn=long(pct->hour*_HOUR_IN_SECOND +pct->minute*_MINUTE_IN_SECOND+pct->second); pdoy->tod.tos=pct->hour*_HOUR_IN_SECOND +pct->minute*_MINUTE_IN_SECOND+pct->second-pdoy->tod.sn; free(pcto); free(pjdo); free(pjd); } void DOYToCommonTime (PDOY pdoy, PCOMMONTIME pct) { PCOMMONTIME pcto; pcto=(PCOMMONTIME)malloc(sizeof(COMMONTIME)); pcto->year=pdoy->year; pcto->month=1; pcto->day=1; pcto->hour=0; pcto->minute=0; pcto->second=0; PJULIANDAY pjdo; pjdo=(PJULIANDAY)malloc(sizeof(JULIANDAY)); double JD,JDO; CommonTimeToJulianDay(pcto,pjdo); JDO=pjdo->day+(pjdo->tod.sn+pjdo->tod.tos)/_DAY_IN_SECOND; JD=JDO+pdoy->day+(pdoy->tod.sn+pdoy->tod.tos)/_DAY_IN_SECOND-1; long a,b,c,d,e; a=(long)(JD+0.5); b=a+1537; c=(long)((b-122.1)/365.25); d=(long)(365.25*c); e=(long)((b-d)/30.6001); pct->day=short(b-d-(long)(30.6001*e)+FRAC(JD+0.5)); pct->month=short(e-1-12*(long)(e/14)); pct->year=short(c-4715-(long)((7+pct->month)/10)); pct->hour=short((pdoy->tod.sn+pdoy->tod.tos)/_HOUR_IN_SECOND); pct->minute=short((pdoy->tod.sn+pdoy->tod.tos -pct->hour*_HOUR_IN_SECOND)/_MINUTE_IN_SECOND); pct->second=pdoy->tod.sn+pdoy->tod.tos -pct->hour*_HOUR_IN_SECOND-pct->minute*_MINUTE_IN_SECOND; free(pcto); free(pjdo); } void GPSTimeToDOY (PGPSTIME pgt, PDOY pdoy) { PJULIANDAY pjd; pjd=(PJULIANDAY)malloc(sizeof(JULIANDAY)); GPSTimeToJulianDay (pgt, pjd); PCOMMONTIME pct; pct=(PCOMMONTIME)malloc(sizeof(COMMONTIME)); JulianDayToCommonTime (pjd,pct); CommonTimeToDOY (pct,pdoy); free(pjd); free(pct); } void DOYToGPSTime (PDOY pdoy, PGPSTIME pgt) { PCOMMONTIME pct; pct=(PCOMMONTIME)malloc(sizeof(COMMONTIME)); DOYToCommonTime (pdoy,pct); CommonTimeToGPSTime (pct, pgt); free(pct); } void JulianDayToDOY (PJULIANDAY pjd, PDOY pdoy) { PCOMMONTIME pct; pct=(PCOMMONTIME)malloc(sizeof(COMMONTIME)); JulianDayToCommonTime (pjd, pct); CommonTimeToDOY (pct,pdoy); free(pct); } void DOYToJulianDay (PDOY pdoy, PJULIANDAY pjd) { PCOMMONTIME pct; pct=(PCOMMONTIME)malloc(sizeof(COMMONTIME)); DOYToCommonTime (pdoy,pct); CommonTimeToJulianDay(pct,pjd); free(pct); } // //IF pjd1>pjd2 OUT delta=pjd1-pjd2 //IF pjd1day+(pjd1->tod.sn+pjd1->tod.tos)/_DAY_IN_SECOND; JD2=pjd2->day+(pjd2->tod.sn+pjd2->tod.tos)/_DAY_IN_SECOND; if(JD1-JD2>0) return JD1-JD2; else return JD2-JD1; } //pjdNew=pjdOld+dDelta void SetTimeDelta (PJULIANDAY pjdNew, PJULIANDAY pjdOld, double dDelta) { double JDold,JDnew; JDold=pjdOld->day+(pjdOld->tod.sn+pjdOld->tod.tos)/_DAY_IN_SECOND; JDnew=JDold+dDelta; pjdNew->day=long(JDnew); pjdNew->tod.sn=long((JDnew-long(JDnew))*_DAY_IN_SECOND); pjdNew->tod.tos=(JDnew-long(JDnew))*_DAY_IN_SECOND -long((JDnew-long(JDnew))*_DAY_IN_SECOND); }
本文档为【时间转换源代码--GPS定位程序】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_591137
暂无简介~
格式:doc
大小:39KB
软件:Word
页数:17
分类:交通与物流
上传时间:2019-06-18
浏览量:34