提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
自我学习: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;
2.示例2
示例2来源于百度,博主的思路会更加清晰,处理也做得更细致,大家可以参考学习。源于:https://wenku.baidu.com/view/97be21c91ae8b8f67c1cfad6195f312b3169eb0a.html
总结
以上就是今天要讲的内容,本文仅仅简单介绍了两种UTC时间转北京时间的使用和代码示例,供给大家参考学习,也是本人学习工作中的一点小总结,如有代码和逻辑错误,欢迎指出修正,同时希望能帮到大家。