提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录 前言一、UTC时间和时区是什么?二、代码1.示例12.示例2 总结前言
自我学习:C语言将UTC时间转北京时间
例如:随着自己从校园步入职场,学习的内容也越来越多,应接不暇的内容让人记不住,也是为了鞭挞自己学习,才决心通过博客来记录自己的成长之路,本文就介绍了C语言将UTC时间转北京时间的方法。
提示:以下是本篇文章正文内容,下面案例可供参考
一、UTC时间和时区是什么?
1.1 协调世界时 Universal Time Coordinated
“协调世界时,又称世界统一时间、世界标准时间、国际协调时间。由于英文(CUT)和法文(TUC)的缩写不同,作为妥协,简称UTC。”
1.2 由于世界各国家与地区经度不同,地方时也有所不同,因此会划分为不同的时区。
正式的时区划分包括24个时区,每一时区由一个英文字母表示。每隔经度15°划分一个时区,有一个例外,每个时区有一条中央子午线;例如,GMT属于“z”区,因此其时间后通常添加后缀“Z”(口语中用后缀“Zulu”)。
经度范围、时区、UTC关系如下图:
计算公式:UTC+时区差=本地时间。
二、代码
1.示例1
代码如下(示例):
//处理函数 void utc_to_local(Systime* time) {if(time->hour+8 > 23) //大于或等于24H的处理{time->hour = (time->hour+8 -24);time->day+=1;switch(time->month){case 2:if(((time->year %400) == 0) || ((time->year%4 == 0) && (time->year%100!=0)))//闰年时间判断{if(time->day>29){time->month++;time->day = 1;}}else{if(time->day>28){time->month++;time->day = 1;}}break;case 4:case 6:case 9:case 11:if(time->day>30){time->month+=1;time->day = 1;}break;default:if(time->day>31){time->month++;time->day = 1;}break;}if(time->month>12){time->month = 1;time->year++;}}else{time->hour+=8;} } //时间结构体 typedef struct {int year;int month;int day;int hour;int minute;int second; }Systime;
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566672.示例2
示例2来源于百度,博主的思路会更加清晰,处理也做得更细致,大家可以参考学习。源于:https://wenku.baidu.com/view/97be21c91ae8b8f67c1cfad6195f312b3169eb0a.html
总结
以上就是今天要讲的内容,本文仅仅简单介绍了两种UTC时间转北京时间的使用和代码示例,供给大家参考学习,也是本人学习工作中的一点小总结,如有代码和逻辑错误,欢迎指出修正,同时希望能帮到大家。