typedef struct{int year;  int month; int day;int hour;int minute;int second;int millisecond;
}DATE_TIME;typedef struct{DATE_TIME D;       //时间char status;       //接收状态double latitude;   //纬度double longitude;  //经度char NS;           //南北纬char EW;           //东西经double speed;      //速度double high;       //高度
}GPS_INFO;typedef struct{BYTE ucTimeZone;            //时区编号INT addOrSub;               //时间加减INT hour;                   //时INT minute;                 //分
}T_TimeZoneOffset;        /*时区对应偏移量*/T_TimeZoneOffset gTimeZoneOffsetTable[] =
{{0 ,-1,12,00},{2 ,-1,11,00},{4 ,-1,10,00},{6 ,-1,9 ,00},{8 ,-1,8 ,00},{10,-1,7 ,00},{12,-1,6 ,00},{14,-1,5 ,00},{15,-1,4 ,30},{16,-1,4 ,00},{17,-1,3 ,30},{18,-1,3 ,00},{20,-1,2 ,00},{22,-1,1 ,00},{24, 0,0 ,00},{26,+1,1 ,00},{28,+1,2 ,00},{30,+1,3 ,00},{31,+1,3 ,30},{32,+1,4 ,00},{33,+1,4 ,30},{34,+1,5 ,00},{35,+1,5 ,30},{51,+1,5 ,45},{36,+1,6 ,00},{37,+1,6 ,30},{38,+1,7 ,00},{40,+1,8 ,00},{42,+1,9 ,00},{43,+1,9 ,30},{44,+1,10,00},{46,+1,11,00},{48,+1,12,00},{50,+1,13,00},
};VOID BspConvertTimeToLocal(BYTE ucTimeZoneIndex, DATE_TIME *GPS)
{WORD32 dwLoop;INT sPn = 0;INT hour = 0;INT minute = 0;/*时区查找*/for(dwLoop=0; dwLoop<sizeof(gTimeZoneOffsetTable)/sizeof(T_TimeZoneOffset); dwLoop++){if(ucTimeZoneIndex == gTimeZoneOffsetTable[dwLoop].ucTimeZone){sPn = gTimeZoneOffsetTable[dwLoop].addOrSub;hour = gTimeZoneOffsetTable[dwLoop].hour;minute = gTimeZoneOffsetTable[dwLoop].minute;break;}}if(sPn >= 0)    //东部时区{/*分处理*/gpsInfo.D.minute = gpsInfo.D.minute + minute;if(gpsInfo.D.minute>59){gpsInfo.D.minute -= 60;gpsInfo.D.hour++;}/*时处理*/gpsInfo.D.hour = gpsInfo.D.hour + hour;if(gpsInfo.D.hour>23){gpsInfo.D.hour-=24;gpsInfo.D.day+=1;if(gpsInfo.D.month==2 ||gpsInfo.D.month==4 ||gpsInfo.D.month==6 ||gpsInfo.D.month==9 ||gpsInfo.D.month==11 ){if(gpsInfo.D.day>30){            //上述几个月份是30天每月,2月份还不足30gpsInfo.D.day=1;gpsInfo.D.month++;}}else{if(gpsInfo.D.day>31){            //剩下的几个月份都是31天每月gpsInfo.D.day=1;gpsInfo.D.month++;}}if(gpsInfo.D.year % 4 == 0 ){//if(gpsInfo.D.day > 29 && gpsInfo.D.month ==2){        //闰年的二月是29天gpsInfo.D.day=1;gpsInfo.D.month++;}}else{if(gpsInfo.D.day>28 &&gpsInfo.D.month ==2){       //其他的二月是28天每月gpsInfo.D.day=1;gpsInfo.D.month++;}}if(gpsInfo.D.month>12){gpsInfo.D.month-=12;gpsInfo.D.year++;}       }}else    //西部时区{/*分处理*/gpsInfo.D.minute = gpsInfo.D.minute - minute;if(gpsInfo.D.minute<0){gpsInfo.D.minute += 60;gpsInfo.D.hour--;}/*时处理*/gpsInfo.D.hour = gpsInfo.D.hour - hour;if(gpsInfo.D.hour<0){gpsInfo.D.hour+=24;gpsInfo.D.day--;if(gpsInfo.D.day <= 0){gpsInfo.D.month--;if (gpsInfo.D.month==1 ||gpsInfo.D.month==3 ||gpsInfo.D.month==5 ||gpsInfo.D.month==7 ||gpsInfo.D.month==8||gpsInfo.D.month==10){gpsInfo.D.day = 31;}else if (gpsInfo.D.month==4 ||gpsInfo.D.month==6 ||gpsInfo.D.month==9 ||gpsInfo.D.month==11){gpsInfo.D.day = 30;}else if (gpsInfo.D.month==2){if(gpsInfo.D.year % 4 == 0 )  //闰年的二月是29天{gpsInfo.D.day = 29;}else  //其他的二月是28天每月{gpsInfo.D.day = 28;}}else /*month=0,year--,month=12*/{gpsInfo.D.day = 31;gpsInfo.D.month = 12;gpsInfo.D.year--;}}}}}

国际时间按时区索引号转换相关推荐

  1. 转linux时间,Linux 时区、时间设置和转换

    以 CentOS 为例. Epoch & Unix Timestamp Conversion Tools. Convert epoch to human readable date and v ...

  2. Java中的时间与时区__java

         转:https://yq.aliyun.com/ziliao/245667      摘要: 本文讲的是Java中的时间与时区__java, 0. 前言: 时间格式: //世界标准时间,其中 ...

  3. C/C++ 日期 时间 time_t与struct tm转换 收藏

    C/C++ 日期 时间 time_t与struct tm转换 收藏 本文从介绍基础概念入手,探讨了在C/C++中对日期和时间操作所用到的数据结构和函数,并对计时.时间的获取.时间的计算和显示格式等方面 ...

  4. ORACLE HANDBOOK系列之九:时间与时区(Time and Time Zone)

    一) Oracle中的四种时间类型 Date Timestamp Timestamp with local time zone Timestamp with time zone 这四种类型中,前两个与 ...

  5. C++中的日期和时间 time_t与struct tm转换

    C++中的日期和时间 time_t与struct tm转换 通过学习许多C/C++库,可以有很多操作.使用时间的方法.但在这之前需要了解一些 "时间"和"日期" ...

  6. Java中的时间、时区和夏令时

    相关概念 时区 时区是地球上的区域使用同一个时间定义.以前,人们通过观察太阳的位置(时角)决定时间,这就使得不同经度的地方的时间有所不同(地方时).1863年,首次使用时区的概念.时区通过设立一个区域 ...

  7. Logstash 原理分析/配置文件详解 时间 日期 时区 ip 反斜杠 grok在线地址 类型转换

    基本配置 Logstash 本身不能建立集群,Filebeat 连接 Logstash 后会自动轮询 Logstash 服务器是否可用,把数据发送到可用的 Logstash 服务器上面去 Logsta ...

  8. Android日期时间与时区使用总结汇总

    Android中关于日期时间与时区的使用总结 2017年03月22日 11:11:23 微信号 lanjixingxun 阅读数:5356 关于Android 实际开放中,涉及时间转换问题,还是很有必 ...

  9. C/C++中的日期和时间 TIME_T与STRUCT TM转换

    C/C++中的日期和时间 time_t与struct tm转换 - 吴文力 - 博客园 摘要: 本文从介绍基础概念入手,探讨了在C/C++中对日期和时间操作所用到的数据结构和函数,并对计时.时间的获取 ...

最新文章

  1. 在阿里干了 5 年招聘,这 10 条建议我必须分享给你!
  2. 基于 abp vNext 和 .NET Core 开发博客项目 - 博客接口实战篇(二)
  3. 连贯的学习黑树(插入节点)
  4. jQuery 请指出'$'和'$.fn'的区别?或者说出'$.fn'的用途。
  5. mysql 备份100G花费时间_利用xtrabackup 全量备份100G的数据恢复到单实例测试
  6. docker命令易错点整理
  7. 【Python爬虫】懂车帝_车型库页面
  8. isprime函数python_Python“函数”之我见
  9. windows 下vscode coderunner+bash 编程
  10. 一文看懂推荐系统:排序11:Deep Cross Network(DCN)
  11. linpack测试软件,服务器性能测试(linpack,stream,netperf,iometer)
  12. MySQL 查询本月各周
  13. C++函数参数中的省略号
  14. 网络层(ip地址划分以及路由)
  15. 为什么微信连接不上服务器失败怎么回事啊,微信为什么一直提示连接失败请检查网络设置...
  16. 在地图上可视化地理空间数据的12种方法
  17. 使用Docker构建服务(6)
  18. Windows下安装pycocotools(本人亲测,可以解决)
  19. 浅谈前端性能优化(九)——DNS解析优化
  20. TeamViewer被检测为商用

热门文章

  1. 全球及中国DHA粉行业消费需求调查与竞争前景研究报告2022-2028年
  2. 失败了,让我们共同买单
  3. higig、higig+、higig2
  4. DELL笔记本数字小键盘设置
  5. RabbitMq第三种模型--fanout
  6. Office 2007 正版免费试用60天!
  7. MATLAB-泛洪(Flooding)协议仿真
  8. ArcGIS二次开发基础教程(00):基础界面设计
  9. 3G卡片在开发板上的详细解决方法(适用于大多数3G卡片)
  10. Elisp之语法练习(五)