时间转换成字符串输出
在项目中需要将时间转成字符串,以cjson格式进行传输,查找了好多资料,C语言没有将时间直接转换成特定格式的函数,所以就自己大概写了一份,提供出来。
后续有必要cjson进行数据打包以及解包也会发出来
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define ALLTime 0
#define BIGTime 1
#define SMALLTime 2
typedef struct
{
int year;
int mon;
int day;
int hour;
int min;
int sec;
}TIMEA;
void zhutime(int time,char *strtime)
{
int num=0;
char *timeb;
int p,c;
if(time<10)
{
num=1;
strcat(strtime,"0");
}
else{num=2;}
timeb=ecvt(time,num,&p,&c);
//这个是浮点型转字符,由于验证是在Linux上进行,Linux上没有包含itoa函数库,如果在其他平台使用,可以更改自己验证
strcat(strtime,timeb);
}
char* TimeToStr(TIMEA timea,unsigned char flag,char *big,char*small)
{
int p,c;
int num=0;
char *timebr;
char Time[20];
char bigtime[20];
char smalltime[20];
num=4;
timebr=ecvt(timea.year,num,&p,&c);
stpcpy(bigtime,timebr);
strcat(bigtime,big);
zhutime(timea.mon,bigtime);
strcat(bigtime,big);
zhutime(timea.day,bigtime);
zhutime(timea.hour,smalltime);
strcat(smalltime,small);
zhutime(timea.min,smalltime);
strcat(smalltime,small);
zhutime(timea.sec,smalltime);
if(flag==BIGTime)
{
stpcpy(Time,bigtime);
}
else if(flag==SMALLTime)
{
stpcpy(Time,smalltime);
}
else
{
stpcpy(Time,bigtime);
strcat(Time," ");
strcat(Time,smalltime);
}
printf("bigtime=%s,\n",bigtime);
printf("smalltime=%s,\n",smalltime);
timebr=Time;
return timebr;
}
int main()
{
TIMEA timea;
char * ctime;
timea.year=2022;
timea.mon=5;
timea.day=27;
timea.hour=11;
timea.min=3;
timea.sec=40;
ctime=TimeToStr(timea,ALLTime,"-",":");
printf("\ntime ctime=\"%s\"\n",ctime);
}
可以根据自己需要选择要年月日 还是时分秒。
也可以自己设置年月日之间的分隔符以及时分秒的分隔符。