将UTC时间转换为北京时间(字符数组转换为整型)

#include <stdio.h>
#include <stdlib.h>

#define subtime 8

struct  time
{                                            
     int year;    
    int month;    
    int date;    
    int hour;     
    int min;     
    int sec;     
};

struct time utc_time={0};
struct  time beijing_time={0};

char BDS_year[3]="21";
char BDS_month[3]="12";
char BDS_date[3]="31";
char BDS_hour[3]="21";
char BDS_min[3]="51";
char BDS_sec[3]="31";


void UTC_to_BJtime(struct time *utime,struct time *local);


int main()
{
    utc_time.year=atoi(BDS_year);
    utc_time.month=atoi(BDS_month);
    utc_time.date=atoi(BDS_date);
    utc_time.hour=atoi(BDS_hour);
    utc_time.min=atoi(BDS_min);
    utc_time.sec=atoi(BDS_sec);
    UTC_to_BJtime(&utc_time,&beijing_time);
    printf("%d,%d,%d,%d,%d,%d",beijing_time.year,beijing_time.month,beijing_time.date,beijing_time.hour,beijing_time.min,beijing_time.sec);
}

void UTC_to_BJtime(struct time *utime,struct time *local)
{
    
    int year,month,day,hour;
    int lastday = 0;                    
    int lastlastday = 0;            

    year     = utime->year;             
    month       = utime->month;
    day      = utime->date;
    hour      = utime->hour + subtime; 

    
    if(month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12){
        lastday = 31;
        if(month == 3){
            if((year%400 == 0)||(year%4 == 0 && year%100 != 0))                
                lastlastday = 29;
            else
                lastlastday = 28;
        }
        if(month == 8)
            lastlastday = 31;
    }
    else if(month == 4 || month == 6 || month == 9 || month == 11){
        lastday = 30;
        lastlastday = 31;
    }
    else{
        lastlastday = 31;
        if((year%400 == 0)||(year%4 == 0 && year%100 != 0))
            lastday = 29;
        else
            lastday = 28;
    }

    if(hour >= 24){                    
            hour -= 24;
            day += 1; 

            if(day > lastday){         
                day -= lastday;
                month += 1;

                if(month > 12){        
                    month -= 12;
                    year += 1;
                }
            }
        }
    if(hour < 0){                                    
            hour += 24;
            day -= 1; 
            if(day < 1){                      
                day = lastlastday;
                month -= 1;
                if(month < 1){             
                    month = 12;
                    year -= 1;
                }
            }
        }

    local->year  = year;
    local->month = month;
    local->date  = day;
    local->hour  = hour;
    local->min    = utime->min;
    local->sec    = utime->sec;
    
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值