使用NB模块,发送指令获得UTC时间,转换为北京时间
包含头文件time.h
uint8_t Get_CurrentTime(void)
{
uint8_t i=0,t=6;
char *First_Addr=NULL;
uint8_t high,low;
uint8_t UTC_Time[6];
struct tm gm_date;
struct tm *l_date=NULL;
time_t seconds;
if(Send_AT_Cmd("AT+CCLK?\r\n", "OK",200))
{
First_Addr=strstr((char*)Uart1RxBuff,"+CCLK:");//获取子字符串再母字符串中出现的首地址
if(First_Addr!=NULL)
{
for(i=0;i<6;i++)
{
high=*(First_Addr+t)-'0';
low=*(First_Addr+(t+1))-'0';
UTC_Time[5-i]=high*10+low;
t+=3;
}
//UTC转本地时间
gm_date.tm_sec=UTC_Time[0];
gm_date.tm_min=UTC_Time[1];
gm_date.tm_hour=UTC_Time[2]+8;
gm_date.tm_mday=UTC_Time[3];
gm_date.tm_mon=UTC_Time[4]-1;
gm_date.tm_year=UTC_Time[5]+100;
seconds=mktime(&gm_date);
l_date=localtime(&seconds);
Current_Time[0]=l_date->tm_sec;
Current_Time[1]=l_date->tm_min;
Current_Time[2]=l_date->tm_hour;
Current_Time[3]=l_date->tm_mday;
Current_Time[4]=(l_date->tm_mon)+1;
Current_Time[5]=(l_date->tm_year)-100;
return 1;
}
}
return 0;
}